@Entity
@Inheritance(strategy = InheritanceType.Joined)
public class SiteMessage implements Identifiable{
private String uid;
@PrePersist
public void onCreate(){
uid = "12344"; // Actually we generates new value here
System.out.println("Executed onCreate1");
}
}
@Entity
@Table(name = "feedback")
public class Feedback extends SiteMessage {
@PrePersist
@Override
public void onCreate(){
super.onCreate();
System.out.println("Executed onCreate2");
}
}
当我保存SiteMessage实体时,我看到:执行onCreate1。当我尝试保存Feedback实体时,反馈或SiteMessage的onCreate()方法没有被执行。
如果我将Base类的实例存储/持久化到数据库,一切正常。日期正在更新。但是现在,如果我想要持久保存子实例,则数据库会抛出以下异常:
org.hibernate.exception.ConstraintViolationException:Column' uid'不能为空
所以,在我看来,这是因为在Child中方法" @PrePersist protected void updateDates()"在将实例持久保存到数据库之前不会调用/调用。
感谢任何帮助。提前谢谢。