2016-08-22 10 views
0

Ich erstelle einen Jersey-Webservice mit Hibernate. Eine der Methoden zur Verfügung, ist die Aktualisierung eines Datensatzes in der Datenbank, die ich bin, wie dies zu tun:Hibernate überprüfen, ob das Aktualisieren eines Datensatzes erfolgreich war

private Boolean updateSingleRecord(Session session, Person updatedRecordData) 
{ 
    try 
    { 
     short id = updatedRecordData.getPersonId(); 
     Person per = (Person) session.load(Person.class, id); 
     per.setPersonEmail(updatedRecordData.getPersonEmail()); 
     per.setPersonMobile(per.getPersonMobile()); 
     transaction.commit(); //was defined earlier in the code 
     return true; 
    } 
    catch(Exception e) 
    { 
     return false; 
    } 
} 

Die Felder sind so definiert, dass das Mobiltelefon einen eindeutigen Wert haben muss. Wenn ich das Objekt auf einen bereits vorhandenen Wert aktualisiere, erhalte ich keinen Fehler, aber der Wert wird einfach nicht geändert. Wie kann ich feststellen, ob nach dem Commit eine Änderung vorgenommen wurde, ohne den Anfangs- und den Neuwert zu vergleichen?

Antwort

0

Hibernate Interceptor, der sich bei Ereignissen wie Erstellen, Ändern und Aktualisieren wie ein Auslöser verhält. http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html Überprüfen Sie, ob die Entität modifiziert und persistent ist.

Sie können eine neue Sitzung-scope Interceptor bei der Umsetzung von Hibernate Feder 4

Session session = s.withOptions().interceptor(new MyInterceptor().openSession(); 
+0

Hat es die Situation klären machen? – pacman

Verwandte Themen