その誕生日である今日JPAを持つユーザーを検索します
質問
私は、ユーザーとテーブルを持っているアプリは、電子メールを送信できるように、今日の誕生日を持っている人のリストを取得しようとしている。
ユーザーが
のように定義されます@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;
}
私は今年の独立した今日生まれたすべてのユーザーを、見つける方法のために苦労してきたように、これは罰金であり、今日生まれた人を見つけるためのすべて、しかしthaのは、本当に便利ではありません。
私は
のように使用することができる機能がありますMySQLを使用してselect month(curdate()) as month, dayofmonth(curdate()) as day
しかし、私はそれにJPAと同等を見つけるのに苦労してきます。
私は春の3.0.1と3.3.2にHibernateを使用しています。
解決
私はJPQLでそれを行う方法を知りませんが、あなたが実行できるように、HQLはday()
とmonth()
機能があります:
from User u
where day(u.birthday) = day(CURRENT_DATE)
and month(u.birthday) = month(CURRENT_DATE)
HQLを使用することができない場合は、、私はネイティブクエリのために行くだろう。
所属していません StackOverflow