我可以一起使用泛型和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
編譯期間無法獲得類類型。你會花費足夠的時間和資源來尋找它。 –