【发布时间】:2018-11-01 17:41:43
【问题描述】:
所以我有这个方法:
@Transactional
public void savePostTitle(Long postId, String title) {
Post post = postRepository.findOne(postId);
post.setTitle(title);
}
据此post:
save 方法没有任何作用。即使我们删除它,Hibernate 仍然会发出 UPDATE 语句,因为实体是受管理的,并且 只要当前正在运行,任何状态更改都会传播 EntityManager 已打开。
确实发出了更新语句,但是如果我在没有@Transactional 注释的情况下运行该方法:
public void savePostTitle(Long postId, String title) {
Post post = postRepository.findOne(postId);
post.setTitle(title);
}
Hibernate 不会发出更新语句,因此必须明确调用postRepository.save(post);。
在这种特定情况下使用@Transactional 有什么区别?
【问题讨论】:
标签: java hibernate jpa spring-data-jpa