Ich war überrascht, vor kurzem zu erfahren, dass das Standard-Ruhezustandsverhalten ist, alle Felder in einem Objekt zu aktualisieren, wenn nur eine einzige Änderung vorgenommen wird und die Zusammenführung aufgerufen wird.Dynamic-Update mit JPA
Dynamic Update ist das Feld, das Sie einen alternativen Ansatz nur die Aktualisierung der geänderten Feld ...
http://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/
ich JPA mit Hibernate bin mit konfigurieren können, und ich versuchte, die folgende
hinzufügen@javax.persistence.Entity
@org.hibernate.annotations.Entity(dynamicInsert=true, dynamicUpdate=true)
meiner Klasse (bisher nur er hatte die JPA-Annotation)
Wie dem auch sei, ich habe die Überwachung der sQL und es hat sich leider nicht geändert und ich sehe immer noch jedes Feld aktualisiert.
Dies ist mein Java, die das Objekt aktualisiert ...
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void setAccountStatusForUser(String username, AccountStatus act){
User u = this.getUser(username);
u.setAccountStatus(act);
this.update(u);
}
und die Update-Methode führt Folgendes aus:
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public Object update(Object o) {
Object a = this.entityManager.merge(o);
this.entityManager.flush();
return a;
}
Jede Hilfe wäre sehr dankbar.
Ist Ihnen klar, dass der Aufruf zum Update völlig unnötig ist? Hibernate behält Änderungen an angehängten Entitäten am Ende der Transaktion automatisch bei. –
Hey, hast du das jemals gelöst?Ich habe das gleiche Problem –