【发布时间】:2014-11-21 13:06:42
【问题描述】:
我的代码
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class SiteMessage implements Identifiable{
@PrePersist
public void onCreate1(){
System.out.println("Executed onCreate1");
}
}
@Entity
@Table(name = "feedback")
public class Feedback extends SiteMessage {
@PrePersist
public void onCreate2(){
System.out.println("Executed onCreate2");
}
}
当我保存反馈实体时,我希望我会看到:Executed onCreate1 和 Executed onCreate2,但我只看到 Executed onCreate2
我用的是eclipselink v2.5.2
【问题讨论】:
-
两个表记录都被插入了吗? OTOH,如果我坚持一个子类的实例,那么我希望这个子类的
@PrePersist方法被调用,而不是超类。毕竟子类是一个完整的实体,它将被持久化到两个表中,但仍然是一个对象。 -
我的父类中有一个日期字段,我想在数据库中创建新记录时设置当前时间
-
如果你使用联合继承,它会起作用吗?
-
是的。当我使用连接继承类型时它可以工作。我创建了一个测试仓库github.com/SunPj/eclipselink-h2-jpa/tree/master
标签: java jpa eclipselink