使用Hibernate,如何使用泛型加載實體?使用加載/使用泛型
Curretly我做:
Entity e = (Entity) session.load(Entity.class, 123);
在NHibernate中,使用泛型,我可以這樣做:
session.Get<Entity>(123);
什麼是Hibernate的相同呢?
使用Hibernate,如何使用泛型加載實體?使用加載/使用泛型
Curretly我做:
Entity e = (Entity) session.load(Entity.class, 123);
在NHibernate中,使用泛型,我可以這樣做:
session.Get<Entity>(123);
什麼是Hibernate的相同呢?
不幸的是,Java不支持Reified Generics還有。
最好的你可以做的是把它包起來在另一家便利的方法來刪除需要投:
public <T> T get(Class<T> cls, Long id) {
return cls.cast(session.load(cls, id));
}
可以使用如下:
Entity e = get(Entity.class, 123);
爲了增加BalusC的答案,您可以在調用通用包裝器方法時更加明確。所以,如果包裝方法是在一類GenericSession:
public class GenericSession {
private GenericSession() {}
public static <T> T get(Class<T> cls, Long id) {
return cls.cast(session.load(cls, id));
}
}
你可以把它像這樣:
Entity e = GenericSession.<Entity>get(Entity.class, 123);
這應該給你的事情是如何投出更好的主意。
這意味着一個'靜態'會話。你不想那樣做。 – BalusC 2010-01-07 00:09:49
是的。我將該方法視爲一種功能,這意味着將會話作爲參數添加進去:public static get(Session session,Class cls,Long id); –
2010-01-07 20:12:47
其實你不需要方法調用中的''。 –
whiskeysierra
2010-01-10 18:42:30