我有一个存储库:
@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而另一个是本机查询吗?
答案 0 :(得分:1)
已解决了Jens的回答:我不得不使用saveAndFlush而不是save:第二次查询未看到我的更改。