내 애플리케이션에서 Spring과 함께 Hibernate를 사용하고있다. 나는 끊임없이 분리 된 객체를 사용하여 데이터베이스 호출이 필요할 때마다 다시 연결했다. 나에 대한 연결을 관리하기 위해 최대 절전 모드 템플릿을 사용하고있다.hibernate와 병합하여 더러운 객체에 에러를 일으킨다.
classA a = (classA)hibernateTemplate.merge(newClassA);
:
classA:
<one-to-many name="classB" inverse="true" cascade="all,delete-orphan" lazy="true">
classB:
<one-to-many name="classC" inverse="true" cascade="all,delete-orphan" lazy="false" fetch="subselect">
내가 ClassB가 또는 classC에있는 항목 중 일부가 변경하는 잠재력을 가진 다음 전화를 만들 때, 나는 오류가 다음과 같이
내 데이터 구조입니다
내가 오류는 다음과 같습니다
는[11/10/08 12:08:39:126 EST] 00000024 SystemOut O 2008-11-10 12:08:38,876 - - ca.thedominion.cfa.persistence.hibernate.ClassADAOImpl :updateClassA Technical Exception occurred:
org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade (remove deleted object from associations): [ca...classC#715590]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [ca...classC#715590]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:639)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.merge(HibernateTemplate.java:820)
누군가는 왜이 에로을 생성하는 나에게 설명 할 수 아르 자형? 내가 알기에, 병합은 트리의 어떤 오브젝트가 변경되었는지, 그리고 업데이트/삭제/삽입을 결정하고, 다른 오브젝트를 삭제하고 다시 삽입하려고 시도해서는 안됩니다. 그러나 이것은 classC 유형의 모든 요소를 삭제하고 다시 삽입하려고 시도하는 것 같습니다.