2013-02-01 3 views
1

클래스 A와 클래스 B의 두 개체가 있습니다 (둘 다 동일한 테이블에 매핑되고 최대 절전 모드 구성에 있습니다). 두 개체의 태그는 데이터베이스의 테이블의 기본 키를 참조합니다.여러 POJO를 사용하여 데이터베이스의 동일한 테이블을 업데이트하는 방법은 무엇입니까?

사용자가 내 응용 프로그램을 사용하면 한 시점에서 객체 A가 업데이트됩니다. 나중에 객체 B가 업데이트됩니다. 때로는이 일어나는 예외는 내가 (메시지가 아래에 인쇄)

org.hibernate.StaleObjectStateException 같은 mutliple 객체를 사용하고 있기 때문에 나는 그것의 생각 : 행이 갱신 또는 삭제 다른 트랜잭션 (또는 unsaved-했다 값의 매핑은) 잘못되었습니다 :

내가 explained in this question로 (이 객체의 equals 메소드를 오버라이드 (override) 할 필요가 수행) 버전 확인 (낙관적 잠금)이 실패했을 때

+0

A와 B가 서로 다른 클래스 또는 동일한 클래스의 2 개의 인스턴스입니까? –

+0

님이 질문을 수정했습니다. A와 B는 서로 다른 클래스입니다. – Karthik

답변

2

StaleObjectStateException은 일반적으로 발생합니다?. 동시 환경에서는 매우 일반적입니다. 이 예외를 처리하기위한 적절한 논리가 필요할 수 있습니다. 예를 들어, 실패한 트랜잭션의 사용자에게 "안녕하세요, 업데이트하려는 데이터가 다른 사용자에 의해 업데이트되었습니다"또는 "오래된 데이터를 업데이트하려고합니다 "blablabla. 전체적으로 매핑에 대해 아무 것도 할 필요가 없다고 생각합니다.

0

이전 트랜잭션은 커밋되지 않았을 수 있으며 flush()를 사용하는 경우를 제외하고는 세션이 JDBC 호출을 실행할시기에 대해서는 실행 순서 만 보장되므로 유용합니다.

관련 문제