Pet*_*ter 3 java postgresql hibernate jpa cascade
我有一个表定义如下:
@实体
@桌子
@Inheritance(策略=InheritanceType.JOINED)
公共类表实现可序列化{
@ID
@GenerateValue
私人长ID;
...
}
然后我有一个继承表:
@实体
@桌子
公共类子表扩展表{
...
}
Hibernate 在我的 Postgres 数据库中正确创建了两个表,但它将两个表之间的删除操作定义为“无操作”。
我如何在 Hibernate 中定义我希望在删除时定义 CASCADE 操作?例如,当我手动从表Table 中删除一行时,我想自动获取表SubTable中要删除的相应行。当我现在尝试从表中删除一行时,它返回外键约束冲突错误。
如果您始终使用 Hibernate 来执行删除,Hibernate 可以处理级联删除。
因此,删除子表实体将会成功,并且还将删除子类表记录和关联的基类行。
如果你想使用 SQL 级别删除,假设你正在使用 hbm2ddl (你不应该这样做,因为你应该使用 Flyway),那么你需要SubTable使用 @OnDelete 注释来注释:
@Entity
@Table
@OnDelete(action = OnDeleteAction.CASCADE)
public class SubTable extends Table {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5480 次 |
| 最近记录: |