繁体   English   中英

JPA 多对多实体未持久化

[英]JPA ManyToMany Entity is not persisted

我有以下两个实体:

@Entity
@Table(name = "mailinglist")
public class MailingList {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String name;

@ManyToMany(fetch = FetchType.EAGER,cascade = {
    CascadeType.PERSIST,
    CascadeType.MERGE
})
@JoinTable(
    name = "has_account",
    joinColumns = @JoinColumn(name = "mailinglist_name"),
    inverseJoinColumns = @JoinColumn(name = "account_id"))
private List<EmailAccount> accounts;

@Entity
@Table(name = "emailaccount")
public class EmailAccount {

@Id
@Column
private String email;

@ManyToMany(mappedBy = "accounts")
@Column
private List<MailingList> mailingLists;

每当我尝试通过请求添加新电子邮件时,尽管它们已正确解析和存储,但它们不会被持久化。 可能是什么原因?

如果问题不够清楚,请告诉我您缺少哪些信息。

请参阅Hibernate 提示:如何 map 双向多对多关联

双向关联在查询中很容易使用,但是当您持久化一个新实体时,它们还需要一个额外的步骤。 添加或删除实体时,需要更新双方的关联。

更新两个实体上的关联是一项容易出错的任务。 因此,为它提供辅助方法是一种很好的做法。

@Entity
@Table(name = "mailinglist")
public class MailingList {

    // ...

    public void addEmailAccount(EmailAccount acc) {
        this.accounts.add(acc);
        acc.getMailingLists().add(this);
    }

    public void removeBook(EmailAccount acc) {
        this.accounts.remove(acc);
        acc.getMailingLists().remove(this);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM