加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长百科 > 正文

在QueryDSL / Oracle SQL中是否有一个干净的解决方案来实现包容

发布时间:2021-01-18 02:55:23 所属栏目:站长百科 来源:网络整理
导读:我正在尝试使用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>)之间;双方都是独家的,

Get a first < this < second expression

但是它转换为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));
}

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读