Spring JPA更新查询后,持久性上下文未更新

时间:2018-11-26 14:04:40

标签: java sql spring hibernate spring-data-jpa

我在JpaRepository中定义了以下查询。

@Modifying
@Transactional
@Query("UPDATE IssueTestfeedback SET value = :value, version = version + 1, noOfEditingInstances = noOfEditingInstances - 1 WHERE id = :id")
public void updateValue(long id, String value);

({valueversionnoOfEditingInstancesIssueTestfeedback.java中的相应字段)

问题在于,更新需要一些时间才能进入数据库。呼叫JpaRepository.flush()无济于事。

到目前为止,我已经尝试添加@QueryHints(value = { @QueryHint(name = "org.hibernate.flushMode", value = "always") })并在spring.jpa.properties.org.hibernate.flushMode=ALWAYS中设置application.properties

感谢您的帮助!

更新:

请参阅@JB Nizet的评论:这与冲洗无关。更新查询将立即执行,但会绕过会话缓存。如果您已经在会话中加载了实体,则它们将不会直接在数据库上反映查询所做的更改。您需要刷新您的实体,或清除持久性上下文并重新加载实体。

clearAutomatically = true批注中添加@Modifying对我来说很成功。

0 个答案:

没有答案