Wir erlauben doppelte Datensätze in der Datenbank mit Ausnahme von ID. Wenn ein Datensatz aktualisiert wird, möchten wir alle Duplikate finden und aktualisieren. Durch Recherche habe ich die Hibernate-Event-Methode beforeUpdate und afterUpdate gefunden. Das Problem ist, dass, wenn ich Duplikate finden und starten Sie durch sie iterieren, ich diesen Fehler:So aktualisieren Sie doppelte Datensätze in Grails
ERROR: Reihe wurde durch eine andere Transaktion aktualisiert oder gelöscht (oder nicht gespeicherte Wertzuordnung falsch war)
Hier ist meine NachAktualisierung Code in der Domäne:
1 def afterUpdate() {
2 println "\n*** afterUpdate ***"
3 def record = this
4
5 DomainObject.createCriteria().list() {
6 ne('id', record.id)
7 or {
8 eq('storeId', record.storeId)
9 and {
10 eq('firstName', record.firstName)
11 eq('lastName', record.lastName)
12 eq('dateOfBirth', record.dateOfBirth)
13 }
14 }
15 //eq('lastUpdated', record.lastUpdated)
16 }.each { dupe ->
17 log.info "syncing ${dupe.id} with ${record.id}"
18 dupe.properties.each{ key, value ->
19 println "*** prop: ${key}: ${value}"
20 }
21 }
22 }
23
der Fehler ist auf der Leitung 19. Wir sind mit Grails 2.4.4 und Entwicklung auf
Windows-
Mist, ich muss den .withNewSession Teil verpasst haben! Danke Joshua! – havoc74