trigger prepersist example create audited hibernate jpa annotations entitylisteners

hibernate - prepersist - ¿@EntityListener también funciona con @MappedSuperclass?



prepersist symfony (1)

Sí, el método anotado con @PostLoad en la superclase mapeada y los métodos de escucha de entidad de LastUpdateListener son llamados.

Tal cosa como el evento del ciclo de vida para la superclase mapeada ni siquiera existe. Como de costumbre, se aplica a la subclase.

¡Gente!

Si defino una clase de entidad y la @MappedSuperclass con @MappedSuperclass y un @EntityListener , ¿el oyente también recibe una llamada para eventos de ciclo de vida dentro de una clase secundaria?

Ejemplo:

@MappedSuperclass @EntityListeners(class=LastUpdateListener.class) public abstract class Animal { @Id private Integer id; private String name; private Calendar dateOfBirth; @Transient private int age; private Date lastUpdate; //getters and setters /** * Set my transient property at load time based on a calculation, * note that a native Hibernate formula mapping is better for this purpose. */ @PostLoad public void calculateAge() { Calendar birth = new GregorianCalendar(); birth.setTime(dateOfBirth); Calendar now = new GregorianCalendar(); now.setTime( new Date() ); int adjust = 0; if ( now.get(Calendar.DAY_OF_YEAR) - birth.get(Calendar.DAY_OF_YEAR) < 0) { adjust = -1; } age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR) + adjust; } } public class LastUpdateListener { /** * automatic property set before any database persistence */ @PreUpdate @PrePersist public void setLastUpdate(Cat o) { o.setLastUpdate( new Date() ); } }

Gracias.