我正在尝试用 Java 构建 Querydsl 表达式。我正在努力达到:
where (last_name, first_name, actor_id) < ('Allen', 'Meryl', 194)
我们进行元组比较的地方。 mysql 和 postgres 支持此功能。
我所有的 ComparablePaths 都在:
List<ComparablePath> paths = new ArrayList<>();
您可以假设此列表已正确填充(确实如此)。所以,我正在尝试这样做:
BooleanBuilder pred = new BooleanBuilder(Expressions.list(paths.toArray(new ComparablePath[0])).???);
但是???没有
lt
运算符。只是eq
、ne
、in
、not in
等。没有比较的。
我们如何在querydsl中生成元组比较?
如果我们假设路径列表的排序方式与元组中字段的排序方式相同,我们可以这样做:
var pred = new BooleanBuilder();
pred.and(paths.get(0).lt("Allen"))
.and(paths.get(1).lt("Meryl"))
.and(paths.get(2).lt(194));