2012-09-19 3 views
0

나는 Hibernate에 매우 큰 문제가있다. 내가 업데이트하거나 테이블의 요소를 저장하려고하면 , 나는이 오류가 : 내 DAO 서비스를 호출 할 때이 오류가 생성됩니다Hibernate는 객체를 저장/업데이트/제거 할 수 없다.

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 

: 세척 후

Session session = sessionFactory.getCurrentSession(); 
session.saveOrUpdate(object); 
session.flush(); 

내가 디버깅,() 오류가 생성됩니다.

다음

테이블의 키 :

@EmbeddedId 
@AttributeOverrides({ 
     @AttributeOverride(name = "sysDocId", column = @Column(name = "SYS_DOC_ID", nullable = false)), 
     @AttributeOverride(name = "sysDataFile", column = @Column(name = "SYS_DATA_FILE", nullable = false)) }) 
public RelDocFileId getId() { 
    return this.id; 
} 

덕분에 모든

답변

0

이 Hibernate는 데이터베이스에서이 기록을 찾을 수없는 것을 의미, UPDATE 문은 결과를 반환 : 0 행이 영향을받은 그 업데이트.

Hibernate는 업데이트 할 대상이 더 이상 존재하지 않는다는 것을 의미합니다. 이는 오래된 데이터를 저장한다는 것을 의미합니다.

이 상황을 허용하거나 세션을 닫고 '안녕하세요, 오래된 데이터를 보았습니다. 더 이상 존재하지 않습니다'라는 사용자에게이 예외를 적절히 처리해야합니다.

+0

삽입 또는 제거시에도이 문제가 발생합니다. – Mohamed

+0

삭제시 설명 된 상황과 동일합니다. 삭제하려고하므로 삭제할 것이 없습니다. 인서트 .. 엔티티를 계단식으로 삽입합니까? Hibernate는 이러한 목적을 위해 saveOrUpdate를 사용할 것입니다. 또한 ID 생성의'assigned' 전략을 가지고 있습니까? Hibernate는 엔티티가 새로운 것인지 아니면 당신이 스스로 ID를 지정했는지를 인식하지 못할 수도있다. 매핑과 삽입/삭제/업데이트 방법이 도움이 될 것입니다. –