0

私は生年月日変数を持つクラス User を持っており、X と Y が 2 つの整数で、生年月日が日にち。

この式を使用して解決しましたが、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))

何か案は?

4

2 に答える 2

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);
于 2015-05-26T18:54:16.720 に答える
1

Restrictions代わりに使用できますか?

.createCriteria(User.class)
.add(Restrictions.ge("birthdate", lowAge))
.add(Restrictions.le("birthdate", highAge))

birthdateUserクラスの生年月日フィールドです。

于 2012-07-03T20:14:33.163 に答える