Deleting from ManyToMany with IndexColumn
Report.entity { @ManyToMany @JoinTable(name = "reports_contents_relations", joinColumns = @Join开发者_开发技巧Column(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); } }
When calling remoteContentFromReport method I get the following error.
java.sql.BatchUpdateException: Duplicate entry deleting from collection
I don't want to delete the Content.entity, just the entry in the join table associating it to a report.
What am I missing?
You should be able to just call report.saveOrUpdate()
and it will automatically unlink all content that is not present in report.contents
list (if everything is mapped correctly).
So get your report, remove unneeded content entries from the contents list, and save it.
精彩评论