更新JPA Hibernate实体而不从数据库中选择它
我有一个名为Execution的hibernate实体。它在我的流程开始时创建,并在结束时更新,指示它是如何完成的 我想更新此实体的单个属性,而不会导致数据库中出现select更新JPA Hibernate实体而不从数据库中选择它,hibernate,select,jpa,lazy-evaluation,Hibernate,Select,Jpa,Lazy Evaluation,我有一个名为Execution的hibernate实体。它在我的流程开始时创建,并在结束时更新,指示它是如何完成的 我想更新此实体的单个属性,而不会导致数据库中出现select Execution Execution=entityManager.getReference(Execution.class,executionId) execution.setStatus(Status.FINISHED)/-->调用此方法将在我的数据库中激发SELECT。我不希望它发生,我只想更新我的实体 这不是此方
Execution Execution=entityManager.getReference(Execution.class,executionId)代码>
execution.setStatus(Status.FINISHED)代码>/-->调用此方法将在我的数据库中激发SELECT。我不希望它发生,我只想更新我的实体
这不是此方法特有的,任何其他名为SELECT子句的方法都会产生SELECT子句。事实上,select似乎在调用我的方法之前就已经发生了。我的印象是,hibernate代理在我的类no args构造函数中放入了一些代码,以便在每次调用任何方法时触发select
是否可以在我的数据库中不触发SELECT语句的情况下更新JPA/Hibernate实体?Hibernate就是这样工作的。每当访问任何非id属性时,其代理对象都会从DB加载真实对象
尝试在流程开始时保存/加载对象(执行选择
),并确保每次触摸对象时会话不会自动刷新(我认为默认行为不是自动刷新,但值得检查)
或者,您也可以在处理过程中尝试从Hibernate会话中分离对象。我接受这个正确答案。通过使用JPA-QL批量更新/Insert@user266391,我发现了一个更简单的解决方案。我对JPA不熟悉,所以感谢链接:-)