Ho un oggetto dominio che contiene i risultati di un calcolo basato su parametri che sono proprietà dello stesso oggetto dominio. Mi piacerebbe essere sicuro che qualsiasi parametro temporale venga modificato dall'utente, viene ricalcolato e salvato correttamente nel database.Modifica oggetto in AfterInsert/AfterUpdate
Sto provando a farlo con afterInsert (per assicurarsi che il calcolo sia corretto in primo luogo) e dopoAggiornamento.
Tuttavia, poiché il mio calcolo sta tentando di modificare l'oggetto stesso, non funziona, generando varie eccezioni di sospensione.
Ho provato a inserire il codice afterUpdate in una transazione, ma questo non ha aiutato. Ho paura di entrare in una questione di dipendenza circolare qui.
L'eccezione che sto ottenendo in questo momento è:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [esc.scorecard.PropertyScorecard#27]
sono gli eventi Gorm progettati per casi di utilizzo più semplici? Sono tentato di concludere che modificare l'oggetto nel mezzo del salvataggio non è la strada da percorrere.
qual è la tua soluzione a questo problema. Anch'io sto affrontando questo dilemma. * .withNewSession * non sembra funzionare per afterInsert. Non riesco a svuotare l'oggetto né a salvarlo (beh, posso .save() ma sembra che i calcoli che ho fatto all'interno di afterInsert non siano persistenti nel database se uso semplicemente .save()). Grazie! In ogni caso, quello che voglio fare è mantenere un oggetto User all'interno della mia classe di dominio (ad es., Message) che lo ha creato. Poiché audit-trail salva solo un riferimento Long (ad es., Creato da), non posso alla fine manipolare la classe del dominio Message e eventualmente fare riferimento al suo attrib –