> Java > java지도 시간 > Hibernate의 '객체가 저장되지 않은 임시 인스턴스를 참조합니다' 오류를 해결하는 방법은 무엇입니까?

Hibernate의 '객체가 저장되지 않은 임시 인스턴스를 참조합니다' 오류를 해결하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-13 01:56:10
원래의
691명이 탐색했습니다.

How to Resolve Hibernate's

오류 발생: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿