gpt4 book ai didi

java - 如何使用 hibernate session 方法更新映射实体类的实例?

转载 作者:行者123 更新时间:2023-11-29 09:07:24 25 4
gpt4 key购买 nike

我需要更新 bp 的两个字段“from”和“to”。 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的状态持久化?

最佳答案

能否在刷新 session 之前尝试事务提交。

它应该可以工作。

关于java - 如何使用 hibernate session 方法更新映射实体类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com