Java JPA:如何比较两个日期

Java JPA:如何比较两个日期,java,hibernate,jpa,Java,Hibernate,Jpa,我需要在JPQL查询中获取两个日期之间的数据,但它不起作用。 日期是整数,但我想与日期进行比较。这里是部分查询 谢谢 Query query = em.createQuery ("select p1 from Profile p1, Preference p2 where (p1.birthdate >= p2.agefrom and p1.birthdate <= p2.ageto and p2.preferenceid=:a)")

我需要在JPQL查询中获取两个日期之间的数据,但它不起作用。 日期是整数,但我想与日期进行比较。这里是部分查询

谢谢

     Query query = em.createQuery
    ("select p1 from Profile p1, Preference p2 where 
(p1.birthdate >= p2.agefrom and p1.birthdate <= p2.ageto and p2.preferenceid=:a)")
                                        .setParameter("a", profileid);


                TABLE Profile {
                profileid integer,
                birthdate date
                }

                TABLE Preference {
                preferenceid integer,
                agefrom integer,
                ageto integer
                }
Query Query=em.createQuery
(“从配置文件p1中选择p1,首选项p2,其中
(p1.birthdate>=p2.agefrom和p1.birthdate之间使用

Query query = em.createQuery("select p1 from Profile p1, Preference p2 where 
   p1.birthdate BETWEEN p2.agefrom AND p2.ageto and p2.preferenceid=:a)")

我认为您无法比较日期和整数。您必须:

  • 使用datediff(year,birthdate,getDate())将出生日期转换为整数
  • 或者使用dateadd(year,-agefrom,getDate())将agefrom转换为日期
  • 或者您可以使用agefrom和ageto之间的datediff(year,birthdate,getDate())来简化它
AGEFORM、ageto为整数(年),生日为日期格式