java - Hibernate 标准按出生之日起的年龄范围搜索

标签 java hibernate criteria

我有一个 User 类,它有一个出生日期变量,我正在尝试编写一个条件查询来查找所有大于 X 岁且小于 Y 的用户,其中 X 和 Y 是两个整数,日期是出生是一个日期。

我使用这个表达式解决了这个问题,但我想避免使用表达式,因为我猜它只能与 MySQL 一起使用。

.createCriteria(User.class)
.add(Expression
         .sql("DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS( BIRTHDATE ) ) ,  '%Y' ) >= " + lowAge))
.add(Expression
         .sql("DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS( BIRTHDATE ) ) ,  '%Y' ) <= " + highAge))

有什么想法吗?

最佳答案

这是一个老问题了。 然而今天我以这种方式解决了,可能对更多人有帮助:

Criteria=cri=session.createCriteria(YourClass.class);
Conjunction conj=Restrictions.conjunction();
Calendar cal=Calendar.getInstance();
cal.add(Calendar.YEAR,(-1*age));
Date birthEnd=cal.getTime();
cal.add(Calendar.YEAR,-1);
Date birthStart=cal.getTime();
conj.add(Restrictions.gt("birthdayAttributeName", birthStart));
conj.add(Restrictions.le("birthdayAttributeName", birthEnd));
disj.add(conj);

关于java - Hibernate 标准按出生之日起的年龄范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318328/

相关文章:

Java:在不指定数组大小的情况下声明多维数组(例如,new int[10][])

java - 如何创建页内配置。通过c :set?

java - 需要一个基于 xml 映射的将 POJO 转换为 XML 和 JSON 的工具

java - 在 Hibernate 中提取 *HQL*

grails - 无法创建包含belongsTo关系的grails Criteria查询

java - 在 Windows 7 上 : Same path but Explorer & Java see different files than Powershell

java - 优化循环更新请求

java - 如何在 Spring Boot 中扩展类而不更改 MySQL 架构?

java - 选择查询并按条件排序

python-2.7 - 如何将一个 Pandas 数据框中的所有小时值与另一个数据框中的年度值相乘?