如何使用Spring Data JPA @Query注释从存储库中查询180天的用户

时间:2016-08-24 10:48:43

标签: java spring hibernate jpa spring-data-jpa

我想要使用Spring Data JPA @Query Annotation从用户中检索所有用户,这些用户年龄超过180天。这是查询..

@Query("select user from User user where datediff(?1,user.createdTime)>=180")
List<User> findByCreatedDateMoreThanSixMonths(Date currentDate);

以下是主叫代码。

List<User> userList = userRepository.findByCreatedDateMoreThanSixMonths(new Date());

这是方式还是我错过了什么? bcz这样做并没有给出预期的结果。

2 个答案:

答案 0 :(得分:1)

您可以使用JPA named query

List<User> findByCreatedAtBefore(Date expiryDate);

public void performLookUp(){

   Calendar cal = Calendar.getInstance();
   Date today = cal.getTime();
   cal.add(Calendar.DAY_OF_MONTH, -180);
   Date daysAgo180 = cal.getTime();

   MyUserRepository.findByCreatedAtBefore(daysAgo180);
}

如果您想要检查6个月,可以add(Calendar.MONTH, -6)

答案 1 :(得分:1)

在您的存储库Bro中尝试此操作: -

1.如果您想使用原生MySQL日期方法: -

@Query("select user from User user where datediff(curdate(),user.createdTime)>=180")
List<User> findByCreatedDateMoreThanSixMonths();

2.如果您想通过自己的日期: -

@Query("select user from User user where datediff(currentDate,user.createdTime)>=180")
List<User> findByCreatedDateMoreThanSixMonths(@Param("currentDate") Date currentDate);

如果您使用的是不同类型的数据库,您仍然可以找到相同的配置。