오류 발생: Hibernate "객체가 저장되지 않은 임시 인스턴스를 참조합니다 - 플러시하기 전에 임시 인스턴스를 저장합니다."
다음을 사용하여 객체를 저장하려고 시도하는 동안 최대 절전 모드에서는 다음과 같은 상황이 발생할 수 있습니다 오류:
object references an unsaved transient instance - save the transient instance before flushing
문제 이해:
이 오류는 Hibernate가 개체에 엔터티인 저장되지 않은 임시 인스턴스 모음이 포함되어 있는 상황을 감지했음을 나타냅니다. 아직 데이터베이스에 유지되지 않은 것입니다. 저장되지 않은 컬렉션이 있는 엔터티를 저장하려고 하면 Hibernate는 해당 컬렉션 내에 임시 인스턴스를 이미 저장했다고 예상합니다.
해결 방법:
이 오류를 해결하려면 , 당신은 상위 엔터티를 저장할 때 임시 인스턴스를 캐스케이드(저장)하도록 Hibernate에 지시해야 합니다. 이는 XML 매핑에 cascade="all" 속성을 추가하거나 주석의 경우 cascade=CascadeType.ALL 주석을 추가하여 수행할 수 있습니다.
XML 예:
<class name="com.entity.Parent"> <collection name="children" cascade="all"> <many-to-one name="child" /> </collection> </class>
예 주석에서:
@Entity public class Parent { @OneToMany(cascade = CascadeType.ALL) private List<Child> children; }
cascade="all" 또는 cascade=CascadeType.ALL을 지정하면 상위 항목을 저장할 때 자동으로 모든 하위 항목도 저장해야 함을 Hibernate에 알릴 수 있습니다. , 이전에 데이터베이스에 저장되지 않은 경우에도 마찬가지입니다. 이렇게 하면 관계의 모든 개체가 적절하게 유지됩니다.
이 수정 사항을 구현하면 저장되지 않은 임시 인스턴스 컬렉션을 사용하여 개체를 성공적으로 저장할 수 있으며 "객체가 저장되지 않은 임시 인스턴스를 참조하는 것을 방지할 수 있습니다. Hibernate에서 "플러싱" 오류가 발생했습니다.
위 내용은 Hibernate의 '객체가 저장되지 않은 임시 인스턴스를 참조합니다' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!