gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:19:25 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com