java - 使用 IndexColumn 从 ManyToMany 中删除

标签 java hibernate

Report.entity {
  @ManyToMany
  @JoinTable(name = "reports_contents_relations",
             joinColumns = @JoinColumn(name = "report_id"),
             inverseJoinColumns = @JoinColumn(name = "content_id"))
  @IndexColumn(name="content_order")
private List contents = new ArrayList();
}

Someclass {
  public void remoteContentFromReport(Content content) {
    List contents = report.getContents();
    contents.remove(content);
    save(report);
  }
}

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

java.sql.BatchUpdateException: Duplicate entry deleting from collection

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

我错过了什么?

最佳答案

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

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

关于java - 使用 IndexColumn 从 ManyToMany 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922046/

相关文章:

java - @Delete 返回 HTTP 状态 405 - 不允许方法

java - hibernate UUID 作为 UUID 类型

java - 运行 jar 时出现 HADOOP_CLASSPATH 问题

java - Android 应用程序无法将数据插入 MySQL DB

java - Java 中的正则表达式映射实现

java - 在 Hibernate 中,StatelessSession 在有 EAGER JOIN 时防止过滤掉重复项

java - 如何使用Java列表作为Hql插入的值?

java - 当父类和子类都被注释时,应用程序异常如何工作?

java - 实体类在 AbstractGenericDao 中如何工作?

java - 相当于Hibernate中Component的注解