@Entity
public class Cart {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private BigDecimal subTotal;
private String cartSessionId;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cart")
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
private List<CartItem> cartItemList = new ArrayList<>();
@Entity
public class CartItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name = "cart_cartitem",
joinColumns = @JoinColumn(name = "cart_id"),
inverseJoinColumns = @JoinColumn(name = "cartitem_id"))
@JsonIgnore
private Cart cart;
@ManyToOne(fetch = FetchType.LAZY)
private Product product;
private Integer quantity;
private BigDecimal price;
Tak wyglądają moje klasy domenowe i sprawa wygląda tak, że wywołuję akcję: cartRepository.save(cart);
i w tym momencie obiekt cart ma do ArrayList dodany obiekt CartItem - podejrzałem debuggerem. Czyli w momencie zapisywania mam relację:
Cart - CartItem
A do bazy zapisuje tylko Cart. Czyli mam 1 rekord w tabeli Cart i żadnego rekordu w CartItem. Dlaczego tak się dzieje ? @JsonIgnore
ma z tym coś wspólnego ? Korzystam z klasy org.springframework.data.repository.CrudRepository
.