0

我有几个将被删除的实体。这些实体将有几个多对多链接。更新多对多链接时,我想我将删除该实体的联接表中的原始链接,然后将链接替换为新链接。但我真的很困惑这将如何运作。如何更新多对多关系?删除也是如此。如果您设置了删除的级联,那么您实际上将删除该实体以及与其链接的实体(集合,我相信的多个实体)。那将如何运作?

@Entity
@Table(name="QUICK_LAUNCH")
public class QuickLaunch implements Serializable {
...
@ManyToMany(fetch=FetchType.EAGER)
        @JoinTable(name="QUICK_LAUNCH_PROVIDER", 
        joinColumns=@JoinColumn(name="QUICK_LAUNCH_ID"),
        inverseJoinColumns=@JoinColumn(name="RESOURCE_ID"))
private List<Provider> providerList;
}

当时的想法是我会删除任何指向提供商的链接,然后添加新链接。我可以以编程方式做到这一点,只需删除链接表中的链接,但我觉得这应该由 ORM 处理(这是一种不合理的感觉吗?)。
是否有人对删除多对多关系有任何一般的智慧之言,也许我可以使用实际实体删除和更新关系......

就像说我有一个带有提供者列表的 quickLaunch ...我将该提供者列表设置为 null (有效地从我希望的那个实体中删除该提供者列表)然后我将该提供者列表设置为一个新的提供者列表...我当然必须以编程方式设置该列表。这听起来是可行的还是只是愚蠢的?

4

1 回答 1

1

这样做的方法是:

  • 从列表中删除提供者将删除 QuickLaunch 和提供者之间的关联(从而从连接表中删除相应的行);
  • 将提供者添加到列表中将创建 QuickLaunch 和提供者之间的关联(并因此在连接表中插入一行)。
于 2012-05-17T16:42:58.343 回答