我想要使用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这样做并没有给出预期的结果。
答案 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);
如果您使用的是不同类型的数据库,您仍然可以找到相同的配置。