Весенние отношения JPA

#java #spring #hibernate #jpa

Вопрос:

У меня есть некоторые проблемы с отношениями Spring JPA.
У меня есть две сущности: Подарок и Конфета. И я хочу, чтобы пользователь мог выбрать доступные конфеты и добавить их в подарок.
Как я могу это сделать с помощью spring jpa?
Я уже пробовал отношения «один ко многим» с подарком в качестве владельца, и я получил ошибку «нулевое значение в столбце» gift_id нарушает ограничения, не являющиеся нулевыми» » при создании и сохранении конфет. Вот мой код:
Класс подарков:

 @Entity  public class Gift implements Serializable {  @Id  @GeneratedValue(strategy = GenerationType.SEQUENCE)  private long id;  private String buyer;   @OneToMany(cascade = CascadeType.REMOVE)  @JoinColumn(name = "GiftId", nullable = true)  private Listlt;Candygt; candyList = new ArrayListlt;gt;();  ...  

Конфета:

 @Entity  public class Candy implements Serializable {  @Id  @GeneratedValue(strategy = GenerationType.SEQUENCE)  @JsonIgnore  private long id;  private String name;  private String brand;  private double price;  private int weight;  private int sugar;  ...  

Ответ №1:

Просто используйте свойство mappedBy, чтобы указать, какое поле использовать для сопоставления отношения.

  1. В Подарок

@OneToMany(mappedBy = "gift", cascade = CascadeType.ALL, orphanRemoval = true) private Listlt;Candygt; candyList = new ArrayListlt;gt;();

  1. В Конфетах

@ManyToOne() private Gift gift;