Hibernate-Ausnahme: Gelöschte Entität wurde an persist [duplicate] übergeben

8

Ich versuche, eine Person pojo in mysql db mit Hibernate EntityManager Persist-Methode einfügen,

%Vor%

und diese Ausnahme erhalten,

%Vor%

und es gibt mehr ..

%Vor%

Meine Person.java-Klasse ist

%Vor%

und dann die Getter-Setter-Methoden des Pojo ..

Die TitleType-Klasse, die Fehler verursacht, ist ein "public static final" -Titeldefinitionsanbieter,

%Vor%

Ich setze die Titeltypklasse auf die Person als

%Vor%

ist es unmöglich, eine öffentliche statische final type definierte Klasse an Hibernate zu übergeben? oder gibt es irgendetwas, was ich falsch mache?

Vielen Dank im Voraus

    
Supun Sameera 26.10.2013, 18:53
quelle

2 Antworten

15

Die Objekte, die Sie beibehalten möchten, enthalten TitleType , die keine ID -Werte haben dürfen. Andernfalls überprüft Hibernate, ob das Objekt im Sitzungskontext persistent oder getrennt ist. Wenn Sie bestimmte Felder Ihres Objekts nicht beibehalten möchten, können Sie @Transient annotation verwenden, um diese Felder von der Feldzuordnung auszuschließen, wenn die Entität beibehalten wird. Dies ist nicht gut, IDs in den DAOs oder Entitäten fest zu codieren, da diese Werte von einem Generator generiert werden könnten. Wenn Sie die Datenbank jedoch manuell mit diesen Konstanten aktualisieren, können Sie diese IDs als Konstanten im Code definieren und Objekte von Sitzung nach ID laden bevor Sie die vorübergehende oder persistente Instanz initialisieren.

    
user2173738 26.10.2013, 19:22
quelle
11

Anstatt dies zu tun: public static final TitleType MR = new TitleType(1, "Mr");

Sie sollten den EntityManager verwenden, um das Objekt abzurufen. Andernfalls wird Hibernate feststellen, dass dieses Objekt (mit der ID 1) bereits gespeichert ist, aber seit Sie es nicht geladen haben, hat der Entity Manager es nicht in seiner eigenen Sammlung - & gt; das ist eine losgelöste Einheit.

Also sollten Sie tun:

%Vor%     
dognose 26.10.2013 19:30
quelle

Tags und Links