首页 > 解决方案 > 本机查询似乎没有看到 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 而另一个是本机查询?

标签: hibernatespring-data-jpaspring-data

解决方案


由于 Jens 的回答解决了:我必须 saveAndFlush 而不是 save:第二个查询没有看到我的更改。


推荐阅读