问题标签 [hibernate-cascade]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
125 浏览

java - 为什么休眠一段时间后停止工作?

我确实有一个在 Apache tomcat 7 上运行的系统(如果有任何区别,则为 7.0.34),其映射具有这样的属性

当我调用我的保存函数时它工作得很好,但一段时间后完全相同的代码,完全相同的数据会引发异常

每次我尝试保存实例时,它都会抛出该异常,直到(有时)我重新启动 tomcat 服务。

你知道为什么会这样吗?

0 投票
0 回答
307 浏览

hibernate - Hibernate 通用复合键和级联保存

我在为我在数据库中使用的复合键编写泛型类时遇到问题。所有使用复合键的表都有关系 ManyToOne 并使用 2 FK。我写了以下课程:

以及带有 CompositeKey 的示例类:

现在的问题是:
1.这种方法正确吗?还是为每个实体编写单独的复合键更好?
2.如果这种方法是正确的,那么我如何将annonation @ManyToOne 从 CompositeKey 类移动到 TestClass ?
3. 这种情况下可以使用级联吗?当保存具有复合键的实体时,我想保存复合键中的实体。

提前感谢您的回复!

0 投票
0 回答
68 浏览

hibernate - Hibernate3 多对多级联删除与清理

我在 Hibernate 3.6 中遇到级联删除问题。我在两个实体类之间有以下多对多关系:菜单和项目。请注意,这是一个单向关系。一个 Menu 实例有一个它所拥有的 Items 集的引用。但是一个 Item 实例不知道它所属的 Menu 实例。

我的要求:表中的一行Item只有在至少有一个Menu条目引用时才应该存在于数据库中。也就是说,不属于任何菜单的项目不应该存在于数据库中。

现在,假设以下场景,

menu1 有 [item1, item2]

menu2 有 [item1]

当我调用 时session.remove(menu1),Hibernate 会尝试从表中删除item1和(此操作实际上被数据集拒绝)。我希望 Hibernate 只删除,因为还有另一个菜单使用.item2Itemitem2item1

我知道,当删除菜单时,我可以通过设置cascade不包含来防止删除关联的项目CascadeType.DELETE。但我也不想要这种行为:我确实想item2从数据库中删除(因为没有菜单正在使用它,即它在 Menu_Item 表中没有关联)。

在 Hibernate 中实现这一目标的最佳方法是什么?

0 投票
1 回答
5145 浏览

java - org.hibernate.HibernateException:不要更改对具有 cascade="all-delete-orphan" 的集合的引用

我正在尝试复制一个持久对象并对其进行修改,然后持久化(插入新记录),但不起作用!

例如:

objcet A(Persistent)
The object B = copy(A)
modify B
insert B //错误

按照我的代码片段,还是谢谢!

映射:

堆栈跟踪:

0 投票
1 回答
1456 浏览

java - 如何使用 Hibernate 正确删除复杂对象?

这是问题所在。当我尝试从数据库中删除目录对象时,Hibernate 还会删除所有具有关联类型和流派 ID 的目录对象。例如,如果我要删除 Type.id=1 和 Genre.id=1 的目录,那么 Hibernate 会删除每个具有此类 ID 的目录。任何想法如何解决它?我只需要删除一个 Catalog 对象,而无需删除 id=1 的 Type 和 Genre 对象。

我删除目录对象的方法

0 投票
0 回答
154 浏览

hibernate - @OneToOne 未删除更改时引用的元素

我在和之间有@OneToOne单向关系。何时合并我想删除,当提供的对象与数据库中存在的对象不同时。这是我在课堂上的关系:ParentChildParentChildChildParent

0 投票
1 回答
201 浏览

hibernate - 双向关系中在哪里设置级联和获取

在 hibernate/JPA 中的双向关系上,您指定了哪个实体(或两者?)获取模式和级联类型?一个例子:

我是否将获取模式和级联类型放在关系的所有者(Employee)上?还是我把它们放在反面(雇主)上?还是(可以?)我把它们都放在上面?我对 JPA/Hibernate 中的级联感到很困惑。我猜我可以在两者上都设置获取模式,这将决定雇主如何获取员工集以及员工如何获取他的雇主。我做出这个假设是因为 @OneToMany 和 @ManyToOne 已经有默认的获取模式。

我不清楚级联类型是如何工作的。这是否同时发生并决定了雇主的级联和雇员的级联?任何帮助深表感谢。

父/子关系以及级联如何修改它们对我来说是最令人困惑的部分。

0 投票
2 回答
2297 浏览

hibernate - 单向多对一:为什么使用 CascadeType.ALL 而不是 CascadeType.PERSIST 保存瞬态实例

当我org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: safu.Publisher尝试运行以下代码时出现异常:


我有从书到出版商的多对一关系。Book 和 Publisher 实体如下:




如果我在实体中@ManyToOne(cascade={CascadeType.PERSIST})替换为一切正常。@ManyToOne(cascade={CascadeType.ALL})Book

有人可以解释为什么会这样吗?

0 投票
0 回答
1160 浏览

java - 在休眠中使用@MappedSuperclass 级联软删除

我正在开发一个具有复杂数据库模式的大型应用程序。我正在使用SpringHibernate开发。我想知道如何软删除一个实体(活动字段在超类中,而不是在所有实体中)。我实施了此处提供的建议。

下面是我的实体和休眠实用程序类的结构

基础实体

子实体:

休眠实用程序类:

现在我对此有一些要求,我现在无法解决。

  1. 当我删除“角色”实体时,所有子实体也应被删除(仅对所有实体进行软删除):->我是否需要获取父实体,遍历子实体并一一删除?

  2. 角色具有与另一个实体“部门”的外键引用。如果一个部门被删除,相关的角色应该被有条件地删除(即,只有当调用者决定:在某些情况下,我们不想删除被引用的实体)。

  3. 有一些自引用列,例如“ParentRoleId”。如果一个角色被删除,它所有引用的角色也应该被删除。-> 我是否需要获取 ID,然后删除所有自引用的子实体,然后删除每个实体?例如:部门可以有一个父部门(通过使用字段:parentdeptid)。如果我删除一个父部门,所有子部门都应该被删除

如果有人对如何执行此操作有任何建议,请告诉我。

0 投票
2 回答
1396 浏览

java - 如何使用 javax.persistence.OneToMany 在休眠 4 中设置级联更新?

我使用休眠 4.2。

它没有给我 OneToMany 注释的休眠变体,而只有javax.persistence.OneToMany.

所以我用它作为

当我更新 Parent 时,我希望 children 集合通过级联 MERGE 更新。

但它不会更新子集合的子实体。它只发送父实体的更新语句。

那么如何更新children集合的级联子实体?

我无法使用org.hibernate.annotations.CascadeType,因为 javax.persistence.OneToMany 不支持它。