我有一个用户表,我正在尝试获取今天生日的人的列表,以便该应用可以发送电子邮件。
用户定义为
@Entity
public class User {
@Size(max = 30)
@NotNull
private String name;
[...]
@Temporal(TemporalType.DATE)
@DateTimeFormat(style = "S-")
protected Date birthday;
}
我有一个方法可以像这样返回今天出生的人
@SuppressWarnings("unchecked")
public static List<User> findUsersWithBirthday() {
List<User> users =
entityManager().createQuery("select u from User u where u.birthday = :date")
.setParameter("date", new Date(), TemporalType.DATE)
.getResultList();
return users;
}
这很好,而且都是为了找到今天出生的人,但是这并不是那么有用,所以我一直在努力寻找一种方法来找到今天出生的所有用户,与年份无关。
使用 MySQL 有一些我可以使用的函数,比如
select month(curdate()) as month, dayofmonth(curdate()) as day
但是,我一直在努力寻找与之等效的 JPA。
我正在使用 Spring 3.0.1 和 Hibernate 3.3.2
最佳答案
我不知道如何在 JPQL 中执行此操作,但 HQL 具有 day()
和 month()
函数,因此您可以运行:
from User u
where day(u.birthday) = day(CURRENT_DATE)
and month(u.birthday) = month(CURRENT_DATE)
如果无法使用 HQL,我会选择原生查询。
关于java - 使用 JPA 查找今天生日的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555791/