本机查询似乎看不到HQL查询数据库更改

时间:2018-07-16 20:42:40

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

我有一个存储库:

@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而另一个是本机查询吗?

1 个答案:

答案 0 :(得分:1)

已解决了Jens的回答:我不得不使用saveAndFlush而不是save:第二次查询未看到我的更改。