Kann ich Generika und JPA zusammen verwenden?Verwenden von Generics und jpa EntityManager-Methoden
Ich versuche, Objekte von vier Klassen in meiner Datenbank zu halten. Hier ist meine PersistService-Klasse:
Aber dann bekomme ich ein Problem mit dem Entfernen des Objekts. Ich habe die folgende Methode in der Klasse PersistService zusätzlich zu dem oben:
// 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);
}
Die letzte Zeile mir eine Kompilierung Fehler gibt. Ich habe <T>.class
T
Class<T>
und T.class
auch versucht, aber es gibt mir noch einen Kompilierzeitfehler. Wenn Sie etwas über Type Erasure erfahren, liegt das daran? Wie behebe ich dieses Problem?
sollten Sie versuchen, eine GenericDao zu machen und die Kind-Klassen machen verlängern – BrunoDM
Sie wollen nie in Ihrem 'PersistService' Methoden verwalteten Transaktionen haben ist. Sie möchten Transaktionsgrenzen basierend auf den logischen Abschnitten der Geschäftslogik verwalten.In der Regel werden Sie mehrere bis viele Datenbankoperationen ausführen, die entweder alle erfolgreich sein sollen oder alle fehlschlagen sollen - andernfalls bleibt Ihr System in einem inkonsistenten Zustand, in dem schwer zu programmieren ist und von dem sich schwer wiederherstellen lässt. – Rob
Sie können den Klassentyp während der Kompilierzeit nicht abrufen. Sie werden genug Zeit und Ressourcen darauf verwenden, um danach zu suchen. –