我可以一起使用泛型和JPA吗?使用泛型和jpa EntityManager方法
我试图坚持四个类的对象到我的分贝。这里是我的PersistService类:
public class PersistService<T> {
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("fileUploadProject");
public static EntityManager getEntityManager() {
return emf.createEntityManager();
}
// Write Client to Database
public static <T> void persist(T obj) {
EntityManager em = getEntityManager();
EntityTransaction et = em.getTransaction();
et.begin();
em.persist(obj);
et.commit();
em.close();
}
}
但是随后我遇到了一个删除对象的问题。我除了上述的PersistService类下面的方法:
// Remove an object from the Database if they exist
public static <T> void remove(Long id) {
EntityManager em = getEntityManager();
EntityTransaction et = em.getTransaction();
<T> obj = em.find(<T>.class, id);
}
最后一行是给我一个编译时错误。我试过<T>.class
T
Class<T>
和T.class
,但它仍然给我一个编译时错误。刚刚了解Type Erasure,是因为这个错误吗?我该如何解决这个问题?
你应该尽量让GenericDao,使子类扩展它 – BrunoDM
你永远要在你的'PersistService'方法所管理的事务。您想基于业务逻辑的逻辑块来管理事务边界。通常情况下,您将执行多个数据库操作,要么全部成功,要么全部失败 - 否则系统将处于不易编码且难以恢复的不一致状态。 – Rob
编译期间无法获得类类型。你会花费足够的时间和资源来寻找它。 –