取り込まないことになる-表に参加マイ、 はここに私のクラスです:JPA多対多の-relationship - joinTable取り込まない
public void saveEmail(EmailDTO emailDTO) {
//Save to the db
final Email myEmail = new Email();
myEmail .copyFrom(emailDTO);
for (Recipient recipient : myEmail.getRecipients()) {
recipient.getEmails().add(myEmail);
recipientRepository.save(recipient);
}
recipientRepository.flush();
emailRepository.save(myEmail);
emailRepository.flush();
}
:私はデータに以下の方法を保存し、私のサービスクラスで
@Entity
@Table(name = "RECIPIENT")
public class Recipient implements Serializable {
@ManyToMany(targetEntity = Email.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "EMAIL_RECIPIENT", joinColumns = {@JoinColumn(name = "RECIPIENT_ID", nullable = false, updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "EMAIL_ID", nullable = false)})
@Fetch(FetchMode.SELECT)
private Set<Email> emails;
}
@Entity
@Table(name = "EMAIL")
public class Email implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "EMAIL_ID")
private Integer emailId;
@ManyToMany(targetEntity = Recipient.class, mappedBy = "emails")
private Set<Recipient> recipients;
}
今私の参加するテーブルは次のようになります。
Email-ID Recipient_ID
67891 [email protected]
それだけでupdate..theはトンに参加しませんことは、次のようになります。私はそれがupdate..Iを行いません間違っていた
Email-ID Recipient_ID
12343 [email protected]
54678 [email protected]
67891 [email protected]
EDIT
であれば、それは例えば挿入された行のfrom.beforeを削除し、ログファイルで見ましたその後、
Email-ID : 1234 ,
Recipient_ID:[email protected]
それだけで、この行を削除するなど、新たな電子メールIDを追加します:参加-の表は、このような行が存在することになる
Email-ID : 5678 Recipient_ID:[email protected]
これはログにある、最初のそれは削除:
delete from email_recipient where recipient_id=? and email_id=?
をそれから挿入:
insert into email_recipient (recipient_id, email_id) values (?, ?)
に私は(私の質問をeditet)、しかし私はNorbert94 @同じ結果 – Norbert94
を得ることをやったANSERを再確認してください、あなたが取得逃しましたループ内で管理された電子メール –
私はHashSetを使用しているので、私は電子メールを受け取ることができません(私は質問を更新しました) – Norbert94