【发布时间】:2017-04-06 00:38:21
【问题描述】:
假设我有一个这样的生成实体:
public class QCandidate extends EntityPathBase<Candidate> {
public final com.avisto.candisearch.persistance.model.enums.QAvailabilityEnum availability;
public final DatePath<java.util.Date> birthDate = createDate("birthDate", java.util.Date.class);
public final NumberPath<Long> cvId= createNumber("cvId", Long.class);
public final StringPath city = createString("city");
}
我的输入值是字段名称(“availability”、“birthDate”、“cvId”...)和一个字符串值,我应该使用它来对所有字段执行“点赞”。
我想从以下字段名称开始构建查询:
- 将日期和数字转换为字符串并将它们小写
- 如果字段是 EntityPathBase(如可用性),则提取 id,然后再次转换为小写字符串
类似:
lower(cast(C.cvId as varchar(255))) like 'value'
每个字段。
我可以使用 querydsl-sql 模块来实现,但我想只使用 jpa 模块来实现它。
我对创建 FULL 'where' 子句的机制不感兴趣(我知道我必须使用 BooleanBuilder,或者至少,这是我在 sql 版本中所做的)。
我想知道的是如何根据字段类型创建单独的“位置”条件。
我正在尝试使用 PathBuilder,但似乎要使用“getString 或 getBoolean”之类的方法,您已经必须知道要提取的字段的类型。就我而言,由于我只是从字段名开始,我无法使用这些方法,并且我不知道如何识别从字段名开始的每个字段的类型,所以我卡住了。
【问题讨论】: