I have some troubles with Spring JPA relationships.
I have two entities: Gift and Candy. And I want user to be able to select available candy and add it to gift.
How can I do that using spring jpa?
I’ve already tried ‘one to many’ relationship with gift as owning side, and I got “null value in column ‘gift_id violates not-null constraints'” error while creating and saving candy.
Here is my code:
Gift class:
@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 List<Candy> candyList = new ArrayList<>(); ...
Candy:
@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; ...
Advertisement
Answer
Just use the mappedBy property to specify what field to use for mapping the relation.
- In Gift
@OneToMany(mappedBy = "gift", cascade = CascadeType.ALL, orphanRemoval = true) private List<Candy> candyList = new ArrayList<>();
- In Candy
@ManyToOne() private Gift gift;