2

我需要更新 ' from' 和 ' to' 的两个字段bpp也与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持久化?

4

1 回答 1

0

您能否在刷新会话之前尝试事务提交。

它应该工作。

于 2013-01-02T13:52:23.210 回答