我在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);
({value
,version
和noOfEditingInstances
是IssueTestfeedback.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
对我来说很成功。