簡體   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