我想在我的setter中做一些事情,当它从Domain类调用时,而不是从hibernate调用它时。此外,我使用Session Factory,所以我不能使用@PostLoad来标记一个标志!
任何人都对此有任何想法? 感谢。
答案 0 :(得分:1)
如果您正在使用注释并注释了字段,那么Hibernate将使用反射直接访问该字段,因此在您的setter中实现自定义逻辑应该没有问题。
如果您使用XML映射,则可以指定字段访问:
第5.1.11节(https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/mapping.html)
The access attribute allows you to control how Hibernate accesses the property at runtime.
By default, Hibernate will call the property get/set pair. If you specify access="field",
Hibernate will bypass the get/set pair and access the field directly using reflection. Y
ou can specify your own strategy for property access by naming a class that
implements the interface org.hibernate.property.PropertyAccessor.
如果你想确定如下:
private String name;
public void setName(String name){
if(this.name != null && ! this.name.equals(name){
//do something
}
this.name = name;
}