1. detached entity passed to persist
@Table(name = "good_base")
@NoArgsConstructor
public class GoodsBase implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(updatable = false, name = "good_idx")
private Long goodsId;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "good_idx", referencedColumnName = "good_idx")
private List<GoodsOption> goodsOptions;
}
다음과 같은 Entity가 있는데 goodsOptions 을 insert 할 때 다음과 같은 에러가 발생하였다.
detached entity passed to persist:
특정 엔티티를 영속 상태ㅐ로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들고 싶다면 cascade 를 이용한 영속성 전이 기능을 사용한다.
- CascadeType.PERSIST : 엔티티를 생성하고, 연관 엔티티를 추가 하였을 때 persist()를 수행하면 연관 엔티티도 함께 persist() 수행 된다. 만약 연관 엔티티가 DB에 등록된 키 값을 가지고 있다면 detached entity passed to persist Exception이 발생한다.
해결
@ManyToOne (cascade = CascadeType.MERGED)
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing:
3. org.springframework.orm.ObjectOptimisticLockingFailureException
org.springframework.orm.ObjectOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
'Back-End > JPA' 카테고리의 다른 글
JPA / ORM 개발시 성능 향상시키기 (0) | 2019.12.21 |
---|---|
JPA 8장 - 프록시와 연관관계 정리 (0) | 2019.12.11 |
Spring JPA 다대다 설정 및 성능 주의 ( Many To Many ) (1) | 2019.11.28 |
Spring JPA의 사실과 오해 - NHN FORWARD (0) | 2019.11.27 |
16장. 트랜잭션과 락, 2차 캐시 및 내 생각 (0) | 2019.11.13 |