العثور على المستخدمين الذين يكونون اليوم مع 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;
}
هذا أمر جيد وكل ذلك للعثور على أشخاص وُلدوا اليوم ، ولكن هذا ليس مفيدًا حقًا ، لذلك كنت أعاني من أجل طريقة للعثور على جميع المستخدمين الذين ولدوا اليوم ، بغض النظر عن العام.
باستخدام 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 خيارًا ، فسأذهب إلى استعلام أصلي.
لا تنتمي إلى StackOverflow