Двунаправленная пружинная связь - внешний ключ не вставлен - PullRequest
2 голосов
/ 05 февраля 2020

Я пытаюсь создать службу, которая будет обрабатывать электронные письма и сохранять их в базе данных.

В данный момент у меня есть следующие объекты в моем проекте:

Mail:

@Data
@Entity
public class Mail {

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

    @NotNull
    private String messageId;

    @NotNull
    @ManyToOne
    @JoinColumn
    private MailAddress sender;

    private String inReplyTo;

    @NotNull
    private LocalDateTime receivedAt;

    private String subject;

    @Lob
    private String message;

    @NotNull
    private String ticketId;

    @OneToMany(mappedBy = "mail", cascade = CascadeType.ALL)
    private List<MailAttachment> attachments;
}

MailAttachment:

@Data
@Entity
public class MailAttachment {

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

    @Lob
    @NotNull
    private byte[] attachment;

    @NotNull
    private String fileName;

    @NotNull
    private String fileFormat;

    @JsonIgnore
    @ManyToOne
    @JoinColumn
    private Mail mail;
}

MailAddress:

@Data
@Entity
public class MailAddress {

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

    @NotNull
    private String address;

    @JsonIgnore
    @OneToMany(mappedBy = "sender")
    private List<Mail> mails;
}

Затем я делаю следующее:

...
List<MailAttachment> attachmentList = new ArrayList<>(1);
...
MailAttachment mailAttachment = new MailAttachment();
mailAttachment.setAttachment(data);
mailAttachment.setFileFormat(fileFormat);
mailAttachment.setFileName(filename);

attachmentList.add(mailAttachment);
...
mail.setAttachments(attachmentList);
mailRepo.save(mail);

Проблема в том, что FK не вставляется в таблицу mail_attachment. Все учебники, которые я видел, работали так же, как и я.

Я использую Spring Boot 2.2.4.

Есть идеи, почему?

Спасибо

1 Ответ

0 голосов
/ 08 февраля 2020

Почему бы вам не попробовать добавить к каждому почтовому вложению: mailAttachment.setMail (mail)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...