JPA PreUpdate implementado usando DescriptorEventAdapter llamada después de buscar / seleccionar
-
19-09-2019 - |
Pregunta
He implementado un DescriptorEventAdapter de APP (EclipseLink). Se lleva a cabo operaciones de fecha y hora simples. El método PreUpdate está siendo llamado, sin embargo, se está llamando con demasiada frecuencia. Que es llamado y actualiza la marca de tiempo, incluso en buscar / operaciones de selección.
El problema que estoy corriendo en parece ocurrir en un marco diferente de la APP también, http://markmail.org/message/nank44rgp4xi2ita#query:JPA%20preupdate%20being%20called%20after%20find+page:1+ mediados: xssqpg7hm4mesfl5 + estado: resultados .
He intentado:
- Comprobar el conjunto de cambios en la DescriptorEvent, esto siempre es nulo
- comprobar el código de la DescriptorEvent, esto es siempre 6
No he podido encontrar ningún otro indicador o atributo que dice "este objeto realmente fue actualizada".
¿Cómo llego PreUpdate actuar sólo cuando un disco realmente se ha actualizado y no meramente seleccionado?
Solución
http://wiki.eclipse.org/Configuring_a_Descriptor_(ELUG)#Table_115 -27
El PreUpdate se llama todo el tiempo, al parecer. aboutToUpdate es el mejor método para llamar a desencadenar una actualización cuando se necesita hacer.
Otros consejos
Aquí está la solución que subí después de leer esta pregunta; También encontré que el conjunto de cambios en la DescriptorEvent siempre parece ser nula.
Yo sin embargo notar que el evento tiene métodos para conseguir el antes y después de objetos:
Object oldObject = event.getOriginalObject();
Object newObject = event.getSource();
lo que le permite hacer comparación manual de los campos. El uso de la reflexión que puede escribir un poco de código que podría comparar todos los campos de ninguna clase.