我有一个类具有出生日期变量的用户,我正在尝试编写一个条件查询来查找超过X年且小于Y的所有用户,其中X和Y是两个整数和日期出生就是约会。
我使用这个表达式解决了它,但我想避免使用Expression,因为我猜它只适用于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))
有什么想法吗?
答案 0 :(得分:2)
这是一个老问题。 但是今天我以这种方式解决了,可能会对更多人有所帮助:
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);
答案 1 :(得分:1)
您可以使用Restrictions
吗?
.createCriteria(User.class)
.add(Restrictions.ge("birthdate", lowAge))
.add(Restrictions.le("birthdate", highAge))
birthdate
是您User
课程的出生日期。