두 필드 'from
'과 'to
'을 bp
으로 업데이트해야합니다. p
도 bp
과 함께 가져오고 있습니다. 자동 플러싱이 비활성화되어 있으므로 명시 적으로 플러시를해야합니다. save()
방법은 unique key constraint
위반하는 새로운 레코드를 삽입하려고 나는이 세척하기 전에 p
을 저장할 수 없습니다하이버 네이트 세션 메소드를 사용하여 매핑 된 엔티티 클래스의 인스턴스를 업데이트하는 방법은 무엇입니까?
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: model.P
: 내가 위의 코드를 실행하면
Query q = session
.createQuery(" select distinct bp from BP bp "
+ " join fetch bp.p "
+ " where bp.id = 2");
bp = (BP) q.list().get(0);
session.getTransaction().commit();
session = test.services.HibernateUtil
.getSessionFactory().getCurrentSession();
session.beginTransaction();
bp.setFrom(new Date());
bp.setTo(new Date());
session.update(bp);
session.flush();
session.getTransaction().commit();
그것은 다음과 같은 예외를 보여줍니다.
내가 세척하기 전에 p
를 업데이트하려고
java.lang.NullPointerException
at org.hibernate.type.LongType.next(LongType.java:79)
at org.hibernate.engine.Versioning.increment(Versioning.java:131)
는 p
의 상태가 지속 할 수있는 방법이 있습니까?
해당 개체의'version' 열이 null입니까? – Augusto
예 버전 p는 null입니다. 그러나 bp의 값은 null이 아닙니다. 감사합니다 –
Hibernate는 버전 fild가 null이기 때문에 p가 transint (즉, 데이터베이스에 존재하지 않음)라고 생각합니다. 데이터베이스에서이를 0으로 설정하고 코드를 다시 실행하십시오. –