티스토리 뷰

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: 클래스명



* 원인

A클래스가 B에 대한 FK 를 가지고 있음. (OneToOne)


SELECT FROM A 

WHERE A.B_ID = ?

실행시 

Restrictions.eq("B_ID", B객체) 해야 함.


B객체를 ID값만 임의 지정한 임시객체를 만들어서 넣었기 때문이었음.



* 해결

B객체를 DB로부터 직접 불러와서 사용

( ex : Restrictions.eq("B_ID", findB(B의ID))  )




* 다른 해결책

http://cpdev.tistory.com/85


@OneToOne(cascade=CascadeType.ALL) 지정하라는 의견


- Cascade 쓰고 싶지 않아서 적용하지 않음



* 참고 : Cascade 

- 위의 예시에서 기능을 사용한다면, 

save(A) 하게 되면

A가 가지고 있는 B객체도 함께 저장하게 됨.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함