Noa*_*evo 3 spring querydsl spring-data spring-data-jpa
我使用 Query DSL 生成的实体 EntitySerializer 以便使用 QueryDSL(与 SpringData 集成)查询 JPA 实体。
我收到来自客户端的属性名称,我想为可以添加 (AND) 到其他谓词的属性创建谓词。
我不知道如何从 EntitySerializer 获取与我的属性名称匹配的谓词/路径。例如,假设我们有一个 Person 实体(带有自动生成的 QPerson 类),它有一个我想过滤的“name”属性(最后我想创建一个泛型方法)。这是通用方法:
Public Predicat getPredicatByPropertyName(String propertyName) {
QPerson p = QPerson.person;
person.getPredicat(“propertyName”).like(“tom”);
}
Run Code Online (Sandbox Code Playgroud)
我的做法略有不同,因为正如蒂莫所说,工作并不简单,如下所示:
query.from(play);
query.where( Expressions.stringPath(play, "name").eq("New play") );
Run Code Online (Sandbox Code Playgroud)
我知道也可以通过单独执行来实现:
StringPath column = Expressions.stringPath(play, "name");
query.from(play);
query.where( column.eq("New play") );
Run Code Online (Sandbox Code Playgroud)
要创建字符串类型的属性,只需使用以下代码段
new StringPath(p, propertyName)
Run Code Online (Sandbox Code Playgroud)
然后可以像这样使用它来创建一个 Predicate 实例
new StringPath(p, propertyName).like("tom")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3886 次 |
| 最近记录: |