更新删除等事务操作需要加上Transactional 
 方式一
@Transactional @Modifying(clearAutomatically = true) @Query(value = "UPDATE User u SET u.status =?1 WHERE u.id = ?2") Integer updateStatusById(String status, Long id);方式二
@Entity @NamedQuery(name = "User.findByEmailAddress",   query = "select u from User u where u.emailAddress = ?1") public class User {  }https://docs.spring.io/spring-data/jpa/docs/2.0.8.RELEASE/reference/html/
| Keyword | Sample | JPQL snippet | 
|---|---|---|
| And | findByLastnameAndFirstname | … where x.lastname = ?1 and x.firstname = ?2 | 
| Or | findByLastnameOrFirstname | … where x.lastname = ?1 or x.firstname = ?2 | 
| Is,Equals | findByFirstname,findByFirstnameIs,findByFirstnameEquals | … where x.firstname = ?1 | 
| Between | findByStartDateBetween | … where x.startDate between ?1 and ?2 | 
| LessThan | findByAgeLessThan | … where x.age < ?1 | 
| LessThanEqual | findByAgeLessThanEqual | … where x.age <= ?1 | 
| GreaterThan | findByAgeGreaterThan | … where x.age > ?1 | 
| GreaterThanEqual | findByAgeGreaterThanEqual | … where x.age >= ?1 | 
| After | findByStartDateAfter | … where x.startDate > ?1 | 
| Before | findByStartDateBefore | … where x.startDate < ?1 | 
| IsNull | findByAgeIsNull | … where x.age is null | 
| IsNotNull,NotNull | findByAge(Is)NotNull | … where x.age not null | 
| Like | findByFirstnameLike | … where x.firstname like ?1 | 
| NotLike | findByFirstnameNotLike | … where x.firstname not like ?1 | 
| StartingWith | findByFirstnameStartingWith | … where x.firstname like ?1 (parameter bound with appended %) | 
| EndingWith | findByFirstnameEndingWith | … where x.firstname like ?1 (parameter bound with prepended %) | 
| Containing | findByFirstnameContaining | … where x.firstname like ?1 (parameter bound wrapped in %) | 
| OrderBy | findByAgeOrderByLastnameDesc | … where x.age = ?1 order by x.lastname desc | 
| Not | findByLastnameNot | … where x.lastname <> ?1 | 
| In | findByAgeIn(Collection ages) | … where x.age in ?1 | 
| NotIn | findByAgeNotIn(Collection ages) | … where x.age not in ?1 | 
| True | findByActiveTrue() | … where x.active = true | 
| False | findByActiveFalse() | … where x.active = false | 
| IgnoreCase | findByFirstnameIgnoreCase | … where UPPER(x.firstame) = UPPER(?1) | 
文章来源: SpringDataJPA