質問

私は、ユーザーとテーブルを持っているアプリは、電子メールを送信できるように、今日の誕生日を持っている人のリストを取得しようとしている。

ユーザーが

のように定義されます
@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を使用することができない場合は、

、私はネイティブクエリのために行くだろう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top