我需要更新 ' from
' 和 ' to
' 的两个字段bp
。p
也与bp
. 自动冲洗被禁用,所以我必须明确地进行冲洗。
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();
当我运行上面的代码时,它显示以下异常:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: model.P
p
在刷新之前我无法保存,因为save()
方法尝试插入违反unique key constraint
.
当我尝试在刷新p
之前更新时,出现以下异常:
java.lang.NullPointerException
at org.hibernate.type.LongType.next(LongType.java:79)
at org.hibernate.engine.Versioning.increment(Versioning.java:131)
有什么办法可以使状态p
持久化?