dom farr
dom farr

Reputation: 4181

Deleting from ManyToMany with IndexColumn

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);
  }
}

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?

Upvotes: 4

Views: 1040

Answers (1)

serg
serg

Reputation: 111255

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.

Upvotes: 1

Related Questions