假设我有一个带有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
或它是不够的,没有得到更改日期字段的项目?先谢谢你了
1条答案
按热度按时间nhn9ugyo1#
因为我只记得这个@Modifying是为了使用更多的查询而不是Select(比如当我想更新,删除或做ddl...)
所以我又搜索了一遍给予你这个baedung链接
现在,EntityManager在执行查询之前被刷新。
您需要了解持久化上下文和其他一些内容。
但是在本例中,您只使用JPARepo而不是EntityManag进行了一些更新,所以我们很好