Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » EclipseLink » Auditar entidad(Cambia en dato en la base de datos pero no en la entidad)
icon5.gif  Auditar entidad [message #807147] Sun, 26 February 2012 02:44 Go to next message
sperll java is currently offline sperll java
Messages: 1
Registered: February 2012
Junior Member
Hola. No soy muy experto en el tema y no se como realizar lo siguiente. De antemano pido disculpas si no utilizo los terminos adecuados para describir el problema.

En varias entidades tengo fecha y usuario que realizo el ultimo cambio a los datos. para que funcione genericamente cree una clase que se encargue de actualizar estos campos y la llamo en las entidades que necesito de la siguiente forma:

@EntityListeners(AuditListener.class)

La clase de auditoria es la siguiente:

public class AuditListener extends DescriptorEventAdapter implements SessionCustomizer, DescriptorCustomizer {
@SuppressWarnings("rawtypes")
public static ThreadLocal currentUser = new ThreadLocal();

/** This will audit a specific class. */
public void customize(ClassDescriptor descriptor) {
descriptor.getEventManager().addListener(this);
}

/** This will audit all classes. */
public void customize(Session session) {
for (ClassDescriptor descriptor : session.getDescriptors().values()) {
customize(descriptor);
}
}

public void aboutToUpdate(DescriptorEvent event) {
for (String table : (List<String>)event.getDescriptor().getTableNames()) {
event.getRecord().put(table + ".actualizadopor", (String) "oscar");
//event.getRecord().put(table + ".fechaactualizacion", Calendar.getInstance());
event.updateAttributeWithObject("fechaactualizacion", new Date());

System.out.println("table: " + table );

System.out.println("updtae" + (String)AuditListener.currentUser.get() );
}
}


}

esta actualiza la informacion sin problema en la base de datos, pero en la entidad no cambia la informaciĆ³n. alguien sabe como puedo refrescar el dato en la entidad?

Gracias.
Re: Auditar entidad [message #808327 is a reply to message #807147] Mon, 27 February 2012 17:01 Go to previous message
Chris Delahunt is currently offline Chris Delahunt
Messages: 1019
Registered: July 2009
Senior Member
Sorry I don't speak spanish, so my take on your problem is a result of google translate.

The updateAttributeWithObject call from aboutToUpdate should operate on the managed entity, so you should see the change afterward assuming you are looking at the managed entity and not something you have merged into the EntityManager. These changes should be merged into the cache, so subsequent queries that return the affected entity should show the changes as well.

Can you describe the code you are using where you do not see the changes, and how the entity is obtained?

Best Regards,
Chris
Previous Topic:No persistence provider
Next Topic:NPE in remote session
Goto Forum:
  


Current Time: Tue Sep 16 15:28:12 GMT 2014

Powered by FUDForum. Page generated in 0.02750 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software