Sto iniziando a vedere le eccezioni "Impossibile sincronizzare lo stato del database con la sessione" nei miei registri e ho difficoltà a riprodurlo. A volte funziona bene ... Sto vedendo due eccezioni (stanno accadendo in momenti diversi):Imprevedibile "Impossibile sincronizzare lo stato del database con la sessione" eccezioni in grails
ERRORE JDBCExceptionReporter - Trovato quando si cerca di ottenere il blocco; provare a riavviare transazione ERRORE PatchedDefaultFlushEventListener - Impossibile sincronizzare lo stato di sessione di database con org.hibernate.exception.LockAcquisitionException: non poteva aggiornare: [com.myapp.School # 1911]
E
ERRORE PatchedDefaultFlushEventListener - Impossibile sincronizzare lo stato del database con la sessione org.hibernate.StaleObjectStateException: La riga è stata aggiornata o eliminata da un'altra transazione (o valore non salvato m ANALITICI era corretto): [com.myapp.School # 1905]
Qui è il metodo in cui vengono gettati:
def populateFriends(ArrayList<FriendView> friends, User user) {
friends.eachWithIndex { friendView, index ->
def friend = Friend.findByFriendId(friendView.id) ?: new Friend()
def schoolName = friendView.schoolName
def school = null
if (schoolName) {
school = School.findByName(schoolName) ?: new School(name: schoolName).save(flush:true)
}
if (school) {
// add to user's school list
user = User.get(user.id)
user.addToSchools(school)
user = user.merge(flush: true)
user.save(flush: true)
friend.school = school
}
friend.save(flush: true)
}
}
Sono stato in questo tutto il giorno e mi piacerebbe davvero apprezzare qualsiasi aiuto.
potete inserire il vostro dominio tutta la scuola qui - 2) perché stai facendo user = user.merge (flush: vero) –
Hai provato user.refresh()? Quando provo qualche comportamento strano di solito mi riferisco a questo post: http://stackoverflow.com/questions/536601/what-are-your-favorite-grails-debugging-tricks o per essere più precisi, la risposta con un tentativo di salvataggio . – marko
Ma dovrebbe davvero cercare di capire perché questo accada e qual è la fonte del problema, non farei una soluzione finché non saprò perché succede in primo luogo. –