EdM*_*elo 6 annotations hibernate jpa entitylisteners
伙计们!
如果我定义一个实体类并用a @MappedSuperclass和an 注释它@EntityListener,那么监听器是否也会在子类中调用生命周期事件?
例:
@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() );
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
是的,映射超类中用 @PostLoad 注释的方法和 LastUpdateListener 的实体侦听器方法被调用。
映射超类本身的生命周期事件之类的事情甚至不存在。像往常一样,它适用于子类。
| 归档时间: |
|
| 查看次数: |
3293 次 |
| 最近记录: |