gpt4 book ai didi

java - 使用 Bean Projection 在 QueryDSL 中自动修剪

转载 作者:行者123 更新时间:2023-11-30 08:25:40 25 4
gpt4 key购买 nike

我有以下 QueryDSL 查询:

List<DTOPerson> names = query.from(p)
.where(p.lastname.like("%smith%"))
.orderBy(p.lastname.asc(), p.firstname.asc())
.list(Projections.bean(DTOPerson.class, p.lastname, p.firstname));

我想要的是:

List<DTOPerson> names = query.from(p)
.where(p.lastname.like("%smith%"))
.orderBy(p.lastname.asc(), p.firstname.asc())
.list(Projections.bean(DTOPerson.class, p.lastname.trim(), p.firstname.trim()));

但是当我这样做时,QueryDSL 给我这个错误:

java.lang.IllegalArgumentException: Unsupported expression trim(p.lastname)
at com.mysema.query.types.QBean.createBindings(QBean.java:59)
at com.mysema.query.types.QBean.<init>(QBean.java:149)
at com.mysema.query.types.QBean.<init>(QBean.java:138)
at com.mysema.query.types.Projections.bean(Projections.java:51)

有没有办法修剪(所有)字符串结果?

最佳答案

在这种情况下,您将需要使用显式别名,因为 Querydsl 只接受路径和别名操作作为 QBean 的参数。

List<DTOPerson> names = query.from(p)
.where(p.lastname.like("%smith%"))
.orderBy(p.lastname.asc(), p.firstname.asc())
.list(Projections.bean(DTOPerson.class,
p.lastname.trim().as("lastname"),
p.firstname.trim().as("firstname")));

Is there a way to trim (all) string results?

您可以创建自定义 FactoryExpression,例如QBean 的子类,来做到这一点。

关于java - 使用 Bean Projection 在 QueryDSL 中自动修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22092002/

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