java 本机更新查询中有关flushAutomatically的问题

chhkpiq4  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(110)

假设我有一个带有updateModificationDate方法的服务:

class SomeService { 
...
@Transactional
public MyItem updateModificationDate(MyItem item)  {
   myRepository.updateModificationDate(myItem.getId(), DateTime.now().toDate());
   myItem = find(myItem.getId());//use dao.find
   return MyItem;
}

}

在MyRepository类中实现的updateModificationDate如下:

class MyRepository extends JpaRepository<MyItem, Integer>{ 
    ....
    
    @Modifying(flushAutomatically = true)
    @Query(nativeQuery = true, value = "UPDATE myItemsTable SET modificationDate = ?2 WHERE id = ?1")
    void updateModificationDate(Integer itemId, Date dateToSet);
}

问题是:是否有必要(和安全)在这里使用flushAutomatically = true或它是不够的,没有得到更改日期字段的项目?先谢谢你了

nhn9ugyo

nhn9ugyo1#

因为我只记得这个@Modifying是为了使用更多的查询而不是Select(比如当我想更新,删除或做ddl...)
所以我又搜索了一遍给予你这个baedung链接
现在,EntityManager在执行查询之前被刷新。
您需要了解持久化上下文和其他一些内容。
但是在本例中,您只使用JPARepo而不是EntityManag进行了一些更新,所以我们很好

相关问题