相关疑难解决方法(0)

我可以在Hibernate管理的表中添加"ON DELETE CASCADE"吗?

我有一些由Hibernate管理的表,有各种外键约束.Cascade on delete目前仅由Hibernate管理.为了解决测试数据,我经常手动创建和删除一些行.如果我可以将ON DELETE CASCADE添加到外键约束中,这对我有很大的帮助,但我不知道Hibernate是否因为数据库在Hibernate之前删除了东西而绊倒了.


很多人似乎都专注于DDL.我的目的不是指示Hibernate使用SQL DELETE CASCADES创建DDL.我只是想知道如果我在数据库指定一个ON DELETE CASCADE 除了cascade = CascadeType.REMOVE在参考注释上有JPA 之外是否有任何伤害,例如@ManyToOne.

java sql hibernate jpa

15
推荐指数
2
解决办法
7146
查看次数

我应该让JPA或数据库级联删除吗?

假设我们有两个实体,A和B. B与A有多对一的关系如下:

@Entity
public class A {
  @OneToMany(mappedBy="a_id")
  private List<B> children;
}

@Entity
public class B {
  private String data;
}
Run Code Online (Sandbox Code Playgroud)

现在,我想删除A对象并将删除级联到其所有子对象(B).有两种方法可以做到这一点:

1)添加cascade=CascadeType.ALL, orphanRemoval=true到OneToMany注释,让JPA在从数据库中删除A对象之前删除所有子项.

2)按原样保留类,只需让数据库级联删除即可.

使用后面的选项有什么问题吗?它会导致实体管理器保留对已删除对象的引用吗?我选择第二个选项的原因是选项一生成n + 1个SQL查询以进行删除,当对象A包含大量子节点时可能需要较长时间,而选项二只生成一个SQL查询然后继续愉快.对此有什么"最佳实践"吗?

sql jpa eclipselink cascading-deletes jpa-2.0

12
推荐指数
3
解决办法
5343
查看次数

使用 JPA 或数据库内部的级联删除/更新?

性能是关键:在数据库内部级联删除/更新还是让 Hibernate/JPA 处理它更好?

如果级联在 DBMS 内部,这会影响查询数据的能力吗?

如果这很重要,我正在使用 HSQLDB。

sql hibernate jpa cascade hsqldb

5
推荐指数
1
解决办法
4658
查看次数

标签 统计

jpa ×3

sql ×3

hibernate ×2

cascade ×1

cascading-deletes ×1

eclipselink ×1

hsqldb ×1

java ×1

jpa-2.0 ×1