Это родительский объект:
@Entity
@Table(name="cart")
public class Cart implements Serializable{
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Id
@Column(name="id")
private Integer id;
@OneToMany(mappedBy="cart", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<CartItem> cartItems;
...
}
Это дочерний объект:
@Entity
@Table(name="cart_item")
public class CartItem implements Serializable{
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Id
@Column(name="id")
private Integer id;
@ManyToOne
@JoinColumn(name="cart_id", nullable=false)
@JsonIgnore
private Cart cart;
...
}
С этим изображением базы данных вы можете видеть, что поле CartItem.cart
имеетвнешний ключ к таблице корзина .
При сохранении родительского объекта я также хочу сохранить его дочерние элементы.
Дочернему объекту перед сохранением необходимо знать id родителя (вы можете видеть @JoinColumn(name="cart_id")
внутри класса CartItem).Я полагаю, что фреймворк решает проблему id .
Я получаю сообщение об ошибке:
SEVERE: Servlet.service() for servlet [dispatcher] in context with
path [/webstore] threw exception [Request processing failed; nested
exception is java.lang.IllegalStateException:
org.hibernate.TransientObjectException: object references an unsaved
transient instance - save the transient instance before flushing:
com.depasmatte.webstore.domain.Cart] with root cause
org.hibernate.TransientObjectException: object references an unsaved
transient instance - save the transient instance before flushing:
com.depasmatte.webstore.domain.Cart
Как мне решить такую проблему?
Ребята, ребята