#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, чтобы указать, какое поле использовать для сопоставления отношения.
- В Подарок
@OneToMany(mappedBy = "gift", cascade = CascadeType.ALL, orphanRemoval = true) private Listlt;Candygt; candyList = new ArrayListlt;gt;();
- В Конфетах
@ManyToOne() private Gift gift;