ジェネリックスとJPAを一緒に使用できますか?ジェネリックスとJPA EntityManagerメソッドの使用
私は4つのクラスのオブジェクトをデータベースに永続化しようとしています。ここに私の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
も試しましたが、コンパイル時にエラーが出ます。タイプ消去について学ぶだけで、このエラーはそれですか?この問題を解決するにはどうすればよいですか?
あなたはGenericDaoを作成し、子クラスは、あなたがあなたの 'PersistService'方法で管理されているトランザクションを持つようにしたいことはありません – BrunoDM
それを拡張するために試してみてください。ビジネスロジックの論理チャンクに基づいてトランザクションの境界を管理したいとします。通常、成功するか、すべて失敗するかを数多くのデータベース操作で行います。そうしないと、システムはコード化が難しく、回復が困難な不整合な状態になります。 – Rob
コンパイル時にクラスの型を取得することはできません。あなたはそれを探し出すのに十分な時間と資源を費やします。 –