hibernate - 本机查询似乎没有看到 hql 查询 db 变化
问题描述
我有一个存储库:
@Repository
public interface FirstRepository extends JpaRepository<Tab1, Long> {
然后我有另一个存储库,我在其中定义了更新本机查询:
@Repository
public interface SecondRepository extends JpaRepository<Tab1, Long> {
@Modifying
@Query(nativeQuery = true, value =
"update Tab1 set something='A' where col1=:par")
int performUpdate(@Param("par") Long par);
然后我有一个服务和一个标记为 @Transactional 的方法:
@Service
public class Service{
@Transactional
public void method(){
tab1.setValue(4);
//changing the db status, still not committing
repo1.save(tab1);
//updating based on the value just set by tab1
repo2.performUpdate(4);
}
由于某种原因 performUpdate 方法失败了!似乎无法看到 repo1 执行的更改。是不是因为第一个是 jpa 而另一个是本机查询?
解决方案
由于 Jens 的回答解决了:我必须 saveAndFlush 而不是 save:第二个查询没有看到我的更改。
推荐阅读
- java - 相当于python中的objectmapper
- python - 在一堆行上使用 lstrip 时,只有以 'r' 开头的那些会受到影响,而 'r' 会被删除,保持其他相同
- swift - 在一行中找到重复的序列
- ios - 向特定用户 AWS SNS 发送推送/电子邮件通知
- python - 使嵌套“For”循环更快的替代方法(产品推荐)
- docker - elasticsearch.yml 在使用 Kubernetes ConfigMap 加载时是只读的
- php - 为什么 queue:work 在 Laravel 5.7 的 1 次迭代后停止?
- python-3.x - 如何在networkx图中绘制半填充节点?
- r - 如何组合不同大小的数据集
- selenium - org.openqa.selenium.NoSuchWindowException:尝试通过 Selenium 和 IEDriverServer 打开 Internet Explorer 11 时无法获取浏览器