나는 Hibernate (처음으로 데이터베이스 측)로 작업하려고하고있다. 그리고 saveOrUpdate 나 Save.Update를 사용할 수있는 가장 좋은 방법을 선택하는 방법도있다. 나는 목적지 POJO 클래스와 그 다른 속성을 가지고있다. Destination 엔티티와 함께 업데이트해야합니다. 가져올 XML 파일을 가져 오는 중입니다. 대상 클래스를 특성 클래스와 함께 업데이트/저장하려면 다음 코드를 사용하고 있습니다.Hibernate saveorUpdate 메소드 문제
try{
getSessionFactory().getCurrentSession().beginTransaction();
getSessionFactory().getCurrentSession().saveOrUpdate(entity);
getSessionFactory().getCurrentSession().getTransaction().commit();
}
catch(Exception e){
getSessionFactory().getCurrentSession().getTransaction().rollback();
}
finally{
getSessionFactory().close();
}
모든 것을 나중에 내가 그것을 나에게 다음과 같은 오류를주는 특정 속성의 대상 PO를 업데이트 같은 XML 파일을 사용하고 때 내가 instance.but 동일한 세션을 사용하고 미세 전까지를하고있다. 나는 내가 secodn 경우 최대 절전 모드에서 것을 이해할 수 unique.but입니다 대상 ID가 대상 테이블과 대상 테이블의 기본 키로 UUID를 사용하고
SEVERE: Duplicate entry 'MNLI' for key 'DESTINATIONID'
9 Jan, 2011 4:58:11 PM org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SEVERE: Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:114)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)
at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2242)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2678)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
이미 존재하는 경우 찾을 수 없습니다 DB에있는 동일한 대상에 대한 항목이며 업데이트보다는 insert 문을 실행하려고합니다.
한 가지 가능한 해결책은 주어진 ID가 이미있는 대상이 이미 있는지 확인하고 결과를 바탕으로 저장 또는 업데이트 명령을 실행할 수 있는지 여부입니다. 내 질문은 다른 어떤 좋은 방법으로도 달성 할 수 있습니까 ..? 사전 saveOrUpdate()
작동
세션에서 getSessionFactory(). getCurrentSession()을 (를) 변수에 사용하는 이유는 무엇입니까? – Baz1nga
세션을하고 있습니까? Save() ?? – Baz1nga
@ User350374; 단지 목적을 테스트하기 위해이 메서드를 사용한다. saveOrUpdate()를 사용하고있다 –