【问题标题】:Deleting from ManyToMany with IndexColumn使用 IndexColumn 从 ManyToMany 中删除
【发布时间】:2011-02-24 17:00:42
【问题描述】:
报告实体{ @ManyToMany @JoinTable(name = "reports_contents_relations", joinColumns = @JoinColumn(name = "report_id"), inverseJoinColumns = @JoinColumn(name = "content_id")) @IndexColumn(name="content_order") 私有列表内容 = new ArrayList(); } 某类{ 公共无效remoteContentFromReport(内容内容){ 列表内容 = report.getContents(); 内容.删除(内容); 保存报告); } }

调用remoteContentFromReport 方法时出现以下错误。

java.sql.BatchUpdateException: 删除重复条目 收藏

我不想删除 Content.entity,只想删除连接表中将其与报表相关联的条目。

我错过了什么?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    您应该能够只调用report.saveOrUpdate(),它会自动取消链接report.contents 列表中不存在的所有内容(如果所有内容都映射正确)。

    因此,获取您的报告,从内容列表中删除不需要的内容条目,然后保存。

    【讨论】:

    • 我在 jpa 中使用 spring 的实体管理器,所以我只有合并或持久化。但是在从集合中删除我的项目后,在报告实体上调用合并会引发重复条目错误。
    • 我使用最简单的环境编写了一个非常简单的测试应用程序,它可以按预期工作。因此,我认为这不是 JPA/Hibernate 或映射的问题,但更有可能是我在控制器和 spring 之间编写的抽象层;可能与交易有关。
    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2011-04-18
    相关资源
    最近更新 更多