JPA2中是否有与OnDelete相当的注释?

3
import org.hibernate.annotations.OnDelete;

@OnDelete(action = org.hibernate.annotations.OnDeleteAction.CASCADE)
List<Foo> foos;

是否有与Hibernate注释OnDelete相等的JPA2注释?

1个回答

2
尝试使用@OneToMany(cascade=CascadeType.Delete)。这样,级联将由ORM(Hibernate)处理,而不是数据库。如果您想在数据库中生成级联,则Hibernate特定的注释是唯一的方法。

我已经在我的@OneToMany注释中包含了cascase = CascadeType.ALL,并且在Hibernate 3.3.x中需要@OnDelete注释。你是说我可以安全地删除这个注释并期望级联删除吗? - Joe
1
如果我删除@OnDelete注释,则“on delete cascade”约束不会作为生成的SQL的一部分生成。我想这是不正确的。 - Joe
@Joe 是的。级联操作不是由数据库处理,而是仅由Hibernate处理。这是预期的行为。 - Bozho
你是在暗示我不需要使用@OnDelete注释,但如果级联设置为ALL,Hibernate仍然会按照级联方式删除我的子删除吗? - Joe
1
@Joe - 是的。但是,如果您还想将您的数据库与除了Hibernate之外的其他东西一起使用,那么您应该需要OnDelete。我也不喜欢Hibernate不会为cascade=DELETE生成它的事实。 - Bozho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接