更新JPA-Hibernate实体而不从数据库中选择它

use*_*391 5 select hibernate jpa lazy-evaluation

我有一个名为Execution的hibernate实体.它在我的过程开始时创建并在结束时更新,表明它是如何完成的.

我想更新此实体的单个属性,而不会在我的数据库中导致select.

Execution execution = entityManager.getReference(Execution.class, executionId); execution.setStatus(Status.FINISHED);// - >调用此方法会在我的数据库中触发SELECT.我不希望它发生,我只想更新我的实体.

这不是特定于此方法的,任何其他方法都会调用SELECT子句.实际上,即使在调用方法之前,选择似乎也会发生.我的印象是,hibernate代理将一些代码放入我的类no-args构造函数中,以便在每次调用任何方法时触发select.

是否可以更新JPA/Hibernate实体而不在我的数据库中触发SELECT语句?

Pét*_*rök 1

这就是 Hibernate 的工作原理。每当访问任何非 id 属性时,其代理对象都会从数据库加载真实对象。

尝试在进程开始时保存/加载对象(以执行该对象SELECT),并确保每当触摸对象时会话不会自动刷新(我认为默认行为是不自动刷新,但值得一张支票)。

或者您也可以尝试在处理过程中将对象与 Hibernate 会话分离。