2014-06-09 4 views
0

Hibernate의 필드를 Oracle 데이터베이스로 업데이트하지만 그렇게하지는 않습니다. 이유가 Hibernate 필드 Leido을 업데이트하지 않는 이유는 무엇입니까?왜 최대 절전 모드로 업데이트 필드가 없습니까?

if (mensajeId.getLeido().equals("false")) { 
     Transaction tx = Main.getSesion().beginTransaction(); 
     mensajeId.setLeido("true"); 
     Mensaje mensaje = listaMensajesRecibidos.getSelectedValue(); 
     mensaje.setId(mensajeId); 
     mensaje.setUsuarioByEmisor(mensaje.getUsuarioByEmisor()); 
     mensaje.setUsuarioByReceptor(mensaje.getUsuarioByReceptor()); 
     Main.getSesion().update(mensaje);   
     tx.commit(); 
    } 
+0

'listaMensajesRecibidos.getSelectedValue()'의 기능은 무엇입니까? DB에서 데이터를 읽었습니까? – AlexR

+0

이것은 내 응용 프로그램에있는 JList입니다. 잘 작동합니다. – user3686589

+0

무엇이'mensajeId'입니까? 이것은 클래스 유형으로 보이며 부울과 같은 매핑 가능 기본 값이 아닙니다. 클래스 유형 인 경우, 일대일로 매핑되는 방식은 무엇입니까? – PeterMmm

답변

0

관리되는 인스턴스가 아닌 경우 update() 메서드를 사용하는 것으로 보입니다. 이 경우 saveOrUPdate() 또는 save()을 사용해야합니다.

하지만이 엔티티가 이미 DB에 있지만 인스턴스가 세션에 연결되어 있지 않은 것으로 생각되면 merge()을 먼저 사용해야합니다.

+0

나는 update, save, saveOrUpdate 등으로 테스트합니다. – user3686589

0

aswer는 테이블에 기본 키가 없으면 Hibernate가 여러 필드를 사용하여 tableId를 만들고 수정할 수 없습니다. 테이블에 필드 기본 키를 생성해야합니다.

관련 문제