2016-07-22 32 views
0

losgelöste Entität übergibt an persist Fehler in Hibernate/Jpa mit demselben Beispiel auf this Link.Warum wird losgelöstes losgelöstes Element weitergegeben?

public static void main(String[] args){ 
     UserBean user = new UserBean(); 
     user.setId(1); 
     user.setUserName("name1"); 
     user.setPassword("passwd1"); 
     em.persist(user); 
    } 

verursacht durch: Einstellung id explizit

Die Frage, warum diese Einheit gelöst hat? Aus meinem Verständnis, wenn Sie eine neue Entität erstellen, ist es vorübergehend und wenn Sie versuchen, es zu bestehen, wird es hartnäckig. Wie also kann die Entität losgelöst werden, da sich die losgelöste Entität nicht im permanenten Kontext, sondern in der Datenbank befindet?

Hilfe und Korrigieren Sie mich, wenn ich irgendwo falsch liege.

Antwort

0

Wie die Fehlermeldung sagt, wenn Sie ein neues Objekt erstellen, sollten Sie die ID nicht festlegen.

public static void main(String[] args){ 
     UserBean user = new UserBean(); 
     user.setUserName("name1"); 
     user.setPassword("passwd1"); 
     em.persist(user); 
    } 

Wenn Sie ein Objekt ändern, die bereits bestehen bleiben wird, müssen Sie es zunächst aus der DB gelesen und dann das Attribut ändern Update das Objekt

+0

aber wenn ein neues Objekt der Entität erstellt wird Es hat keinen Datensatz in der Datenbank, aber wir können immer noch über dieses Objekt persistieren. Wie kann es dann ein Update sein? Und wenn die ID anders ist, dann wird das Objekt als anders betrachtet, und warum sollte es nicht einfach als neuer Datensatz gespeichert werden, wenn es in IDs keinen Konflikt gibt? –

+1

@MilindVinkar es ist ein Update, weil das Objekt bereits eine ID hat – Jens