다음과 같은 문제가 발생하며 적절한 해결 방법을 찾을 수 없습니다. id, x (외래 키), y (시퀀스 번호) 및 z (내용) 속성과 관계 A가 있습니다. 또한 x-y에는 고유성 제약이 있습니다. 그것은 보통 (455, 159, 1, ...), (456, 159, 2, ...), (457, 159, 3, ...) 등과 같은 튜플을 가지고 있습니다. 최대 절전 모드 이것이 특정 클래스의 매핑 테이블입니다. 이제는 새로운 객체를 삽입하거나 기존 객체를 제거하고 다른 객체의 시퀀스 번호를 업데이트하려는 사용 사례가 있습니다. 예를 들어, 새 개체를 삽입 한 직후에는 순서 번호 2를 가져오고 이전에 2 인 개체는 3이되어야하고 3은 4가되어야합니다. 개체 2를 삭제할 때 비슷한 일이 발생해야합니다. 그러면 2가되어야합니다.MySQL/최대 절전 모드에서 중복 항목 오류가 발생했습니다.
그러나 업데이트가 트리거되면 ConstraintViolationException이 발생합니다.
SEVERE: Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update ... Caused by: java.sql.BatchUpdateException: Duplicate entry '159-2' for key 2
이런 일이 발생하는 이유는 확실히 설명 할 수 없다. 저기 커밋/세션 플러시, 그래서 나는 최대 절전 모드/MySQL은 시간적 불일치를 처리 할 수 있지만 커밋에 대한 제약을 확인합니다. 누락 된 것이 있거나 중요한 해결 방법 없이는이 작업을 수행 할 수있는 방법이 있습니까?
건배
확인 - 약간의 오해가 있습니다. 내 잘못 : 관계는 또 다른 자동 생성 ID 속성이 있습니다. 외래 키/시퀀스 번호에 대한이 추가 고유성 제약 조건이 있습니다. – VHristov