【问题标题】:Update record in many to many relation by Hibernate通过 Hibernate 更新多对多关系中的记录
【发布时间】:2016-11-28 10:55:55
【问题描述】:

我有两个类,Document 类和Role 类以及它们之间的@ManyToMany 关系。

我尝试获取一个文档,然后我获取了所有角色并用它们填充文档集。

现在,当我更新文档集(插入新角色或删除现有角色)然后通过 session.update(doc) 更新文档对象时,Hibernate 不会对 @ManyToMany 表执行任何插入或删除语句,它只更新文档和角色记录。

注意:两个表中的lazy 属性都是“lazy = true”。

【问题讨论】:

  • 请提供Bean的定义和涉及的代码。
  • 对此我很抱歉,我的代码使用了很多通用函数来从数据库中获取记录,而且很复杂。但要点是:我想获取一个文档并用当前角色填充它的集合,然后更新这个集合,当我更新这个文档时,我想将此更新反转到@ManyToMany 表中,我该怎么做?我必须在“hbm”文件中执行特定要求吗?是否还需要用文档填充集合的角色?因为我必须在两个表中都保持lazy = true。非常感谢。
  • 我知道在某些项目中可能会很复杂,但调试问题的一个好方法是编写一个生成问题的小示例。这有助于清楚地了解真正的问题和事件无法导致解决方案,适合在寻求帮助时提供信息。为了帮助您,我们需要查看在您保存实例的位置截取的代码。
  • 您是否检查过您的 doc 是否已附加到会话中?
  • 我解决了这个问题,这是因为我不知道双向和单向多对多关系之间的区别。我很抱歉,因为我无法以正确的方式介绍问题,但它终于解决了。非常感谢。

标签: java database hibernate many-to-many


【解决方案1】:

问题是我正在使用双向@ManyToMany 关系(这意味着文档具有一组角色并且该角色具有一组文档)并且以这种方式,当我创建一个文档并向其添加一些角色时,即使这样我必须将此文档添加到集合中的每个角色。 当我使用单向@ManyToMany 关系时(这意味着只有一侧有一组其他类)我只是用一些角色填充文档集。

这篇文章很有帮助

https://howtoprogramwithjava.com/hibernate-manytomany-unidirectional-bidirectional/

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 2020-08-04
    • 1970-01-01
    • 2019-02-11
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多