注意:从 JPA 的角度来讲,这里使用 save() 方法是没有必要的,因为 role 是用 Repository 取出的,且处于事务内,所以其被代理,任何对其的改变都会在事务结束后自动提交!但是,这里仍然使用了 save() 方法,主要是为了与 Spring Data 提供的 Repository 抽象保持一致。
自定义方法的事务性:
@Transactional(readOnly =true)interfaceUserRepositoryextendsJpaRepository<User,Long> {List<User> findByLastname(String lastname); @TransactionalvoiddeleteByEmail(String email); @Modifying @Transactional @Query("delete from User u where u.active = false")voiddeleteInactiveUsers();}