2010-05-27 34 views
3
 
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方法时,出现以下错误。使用IndexColumn从ManyToMany中删除

java.sql.BatchUpdateException: 重复条目从 收集

删除我不想删除Content.entity,只需在连接表关联它的一份报告显示的条目。

我错过了什么?

回答

1

您应该可以直接拨打report.saveOrUpdate(),它会自动取消链接report.contents列表中不存在的所有内容(如果所有内容都正确映射)。

因此,得到您的报告,从内容列表中删除不需要的内容条目,并保存它。

+0

我使用jpa的spring的实体管理器,所以我只有合并或坚持。但是在从收集中删除我的项目后调用报表实体上的合并,会引发重复项错误。 – 2010-05-28 14:48:41

+0

我使用最简单的环境编写了一个非常简单的测试应用程序,它的工作原理与我预期的一样。 因此,我认为这不是JPA/Hibernate或映射的问题,但更有可能是在我的控制器和spring之间写入的抽象层中;可能与交易有关。 – 2010-05-28 14:55:54