在QueryDSL / Oracle SQL中是否有一个干净的解决方案来实现包容
发布时间:2021-01-17 23:50:31 所属栏目:站长百科 来源:网络整理
导读:我正在尝试使用QueryDSL(包括开始,独占结束日期)创建一个时间间隔的查询. 在QueryDSL的documentation中,我发现公共BooleanExpression介于(表达式 T from,Expression T)之间;双方都是独家的, Get a first this second expression 但是它转换为Oracle SQL BETW
我正在尝试使用QueryDSL(包括开始,独占结束日期)创建一个时间间隔的查询. 在QueryDSL的documentation中,我发现公共BooleanExpression介于(表达式< T> from,Expression< T>)之间;双方都是独家的,
但是它转换为Oracle SQL BETWEEN,它包含在两端(相当于第一个< = this< = second). 像这样的QueryDSL: [...] person.name.like(n) .and(person.birthdate.between(from,to)) [...] 转换为Oracle SQL,如下所示: SELECT * FROM PERSON WHERE NAME LIKE n AND BIRTHDATE BETWEEN from AND to; 有谁知道这背后的原因/逻辑? 很明显,这对我来说不会对我有用. 我是否应该使用更笨重的人 person.name.like(n) .and(person.birthdate.goe(from) .and(person.birthdate.lt(to)) 还是有一个干净的解决方案,做我想要的? 解决方法该文档已于 http://www.querydsl.com/static/querydsl/2.2.0/apidocs/com/mysema/query/types/expr/ComparableExpression.html#between(T,%20T)年前修复过2.2.0于2011年7月18日发布.我强烈建议您使用4. *或3. *的新版Querydsl. 对于包容性开始,独占结束,您可以编写自己的实用方法: public static <T> Predicate range(ComparableExpression<T> expr,T from,T to) { return expr.goe(expr).and(expr.lt(to)); } (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读