gpt4 book ai didi

sql - 是否有一个干净的解决方案来实现 QueryDSL/Oracle SQL 中的包容性开始,独占性结束?

转载 作者:行者123 更新时间:2023-12-04 14:39:16 24 4
gpt4 key购买 nike

我正在尝试使用 QueryDSL(包括开始日期、唯一结束日期)创建一个时间间隔查询。

documentation QueryDSL 我发现public BooleanExpression between(Expression<T> from, Expression<T> to);双方互斥,

Get a first < this < second expression



但是它转换为 Oracle SQL BETWEEN两边都包含在内(相当于 first <= 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));
}

关于sql - 是否有一个干净的解决方案来实现 QueryDSL/Oracle SQL 中的包容性开始,独占性结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786085/

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