반응형
Notice
Link
스택큐힙리스트
하이버네이트 "오브젝트가 저장되지 않은 일시적 인스턴스에 대한 참조 - 플러시하기 전에 일시적 인스턴스를 저장하십시오" 오류를 해결하는 방법 본문
카테고리 없음
하이버네이트 "오브젝트가 저장되지 않은 일시적 인스턴스에 대한 참조 - 플러시하기 전에 일시적 인스턴스를 저장하십시오" 오류를 해결하는 방법
스택큐힙리스트 2023. 10. 26. 12:26반응형
하이버네이트를 사용하여 객체를 저장할 때 다음과 같은 오류 메시지가 발생합니다.
오브젝트가 저장되지 않은 일시적 인스턴스를 참조합니다 - 플러시하기 전에 일시적 인스턴스를 저장하세요.
답변 1
콜렉션 매핑에는 cascade=all
(xml을 사용하는 경우) 또는 cascade=CascadeType.ALL
(주석을 사용하는 경우)을 포함해야 합니다.
이는 엔티티에 콜렉션이 있고, 해당 콜렉션에는 데이터베이스에 없는 하나 이상의 항목이 있는 경우 발생합니다. 위의 옵션을 지정함으로써 하이버네이트에게 이들을 부모를 저장할 때 데이터베이스에 저장하도록 알려줍니다.
답변 2
하이버네이트 객체가 저장되지 않은 일시적인 인스턴스를 참조함 - 플러싱하기 전에 일시적인 인스턴스를 저장하세요 오류를 해결하는 방법에 대해 알아보겠습니다. 이 오류는 하이버네이트를 사용하는 동안 종종 발생하는데, 객체 간 관계에 문제가 있는 경우 발생합니다.처음으로 해결해야 할 문제는 일시적인 인스턴스를 저장하지 않은 것입니다. 하이버네이트에서는 관련된 모든 개체를 만들기 전에 모든 개체가 저장되어야 합니다. 이 문제를 해결하기 위해 여러 가지 방법을 시도할 수 있습니다.
첫 번째 방법은 일시적인 인스턴스를 영속화하는 것입니다. 이를 위해 Hibernate Session의 save() 또는 saveOrUpdate() 메서드를 사용할 수 있습니다. 이 메서드는 일시적인 개체를 영속적 상태로 변경하여 데이터베이스에 저장합니다. 일시적 개체를 저장한 후에는 오류가 발생하지 않아야 합니다.
두 번째 방법은 CascadeType을 사용하여 관련 개체를 자동으로 저장하는 것입니다. CascadeType 옵션을 사용하면 Hibernate가 관련된 모든 개체를 자동으로 저장할 수 있습니다. Cascade.PERSIST 옵션을 사용하여 일시적인 개체를 자동으로 저장하는 것이 필요한 경우가 많습니다.
세 번째 방법은 영속 컨텍스트를 확인하는 것입니다. 영속 컨텍스트는 Hibernate에서 개체를 관리하는 데 사용되는 캐시입니다. 일시적 개체를 저장하기 전에 영속 컨텍스트에 개체가 있는지 확인해야 합니다. 개체가 이미 영속 컨텍스트에 있으면 save() 메서드를 호출할 필요가 없습니다.
마지막으로, 지연 커밋 전략을 사용하는 것도 도움이 될 수 있습니다. 지연 커밋 전략을 사용하면 Hibernate가 관리하는 트랜잭션 내에서 모든 개체 저장 작업을 한꺼번에 처리합니다. 이렇게 하면 일시적인 개체를 저장하기 전에 다른 개체가 모두 저장되므로 오류가 발생하지 않습니다.
결론적으로, 하이버네이트 객체가 저장되지 않은 일시적인 인스턴스를 참조함 - 플러싱하기 전에 일시적인 인스턴스를 저장하세요 오류를 해결하기 위해 여러 가지 방법을 시도할 수 있습니다. 일시적인 개체를 영속화하거나 CascadeType을 사용하거나 영속 컨텍스트를 확인하거나 지연 커밋 전략을 사용하는 방법 중 하나를 선택할 수 있습니다. 이를 통해 데이터베이스 작업 중에 발생하는 오류를 해결할 수 있습니다.
(Word count: 321)
반응형
Comments