Tengo un objeto de dominio que contiene los resultados de un cálculo basado en parámetros que son propiedades del mismo objeto de dominio. Me gustaría asegurarme de que el usuario cambie los parámetros de tiempo, los vuelva a calcular y se guarde correctamente en la base de datos.Modificar objeto en AfterInsert/AfterUpdate
Estoy tratando de hacer eso con afterInsert (para asegurarse de que el cálculo sea correcto en primer lugar), y afterUpdate.
Sin embargo, dado que mi cálculo está tratando de modificar el objeto en sí, no está funcionando, lanzando varias excepciones de hibernación.
Traté de poner el código afterUpdate en una transacción, pero eso no ayudó. Me temo que estoy entrando en problemas de dependencia circular aquí.
La excepción Me estoy haciendo en este momento es:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [esc.scorecard.PropertyScorecard#27]
son los eventos GORM diseñados para casos de uso más simples? Estoy tentado de concluir que modificar el objeto que está en el medio de salvar no es el camino a seguir.
¿cuál es tu solución a este problema. También estoy enfrentando este dilema. * .withNewSession * no parece funcionar para afterInsert. No puedo tirar el objeto ni guardarlo (bueno, puedo .save() pero parece que los cálculos que hice dentro de afterInsert no se conservan en la base de datos si solo uso .save()). ¡Gracias! De todos modos, lo que quiero hacer es persistir en un objeto User dentro de mi clase de dominio (por ejemplo, Message) que lo creó. Como audit-trail solo guarda una referencia larga solamente (por ejemplo, createdby), no puedo manipular eventualmente la clase de dominio Message y eventualmente hacer referencia a su attrib –