首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用queryDSL通过属性名获取动态属性谓词

使用queryDSL通过属性名获取动态属性谓词
EN

Stack Overflow用户
提问于 2012-11-14 12:43:34
回答 2查看 4K关注 0票数 3

我使用Query DSL生成的实体EntitySerializer,以便使用QueryDSL (与SpringData集成)来查询JPA实体。

我从客户端接收属性名称,并希望为可以添加(和)到其他谓词的属性创建谓词。

我不知道如何从EntitySerializer获取与我的属性名匹配的谓词/路径。例如,假设我们有一个Person实体(具有自动生成的QPerson类),它有一个我想要过滤的“name”属性(最后我想创建一个泛型方法)。下面是泛型方法:

代码语言:javascript
运行
AI代码解释
复制
Public Predicat getPredicatByPropertyName(String propertyName)  {
      QPerson p = QPerson.person;
      person.getPredicat(“propertyName”).like(“tom”);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-15 07:31:14

要创建字符串类型的属性,只需使用以下代码片段

代码语言:javascript
运行
AI代码解释
复制
new StringPath(p, propertyName)

,然后可以像这样使用它来创建谓词实例。

代码语言:javascript
运行
AI代码解释
复制
new StringPath(p, propertyName).like("tom")
票数 5
EN

Stack Overflow用户

发布于 2015-12-17 16:44:19

我做的有点不同,因为正如Timo所说的那样,它不能直接工作,这是它:

代码语言:javascript
运行
AI代码解释
复制
query.from(play);
query.where( Expressions.stringPath(play, "name").eq("New play") );

我知道这也可以通过单独做来实现:

代码语言:javascript
运行
AI代码解释
复制
StringPath column = Expressions.stringPath(play, "name");

query.from(play);
query.where( column.eq("New play") );
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13379043

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文