3

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

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

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

Public Predicat getPredicatByPropertyName(String propertyName)  {
      QPerson p = QPerson.person;
      person.getPredicat(“propertyName”).like(“tom”);
}
4

2 回答 2

5

要创建 String 类型的属性,只需使用以下代码段

new StringPath(p, propertyName)

然后可以像这样使用它来创建一个 Predicate 实例

new StringPath(p, propertyName).like("tom")
于 2012-11-15T07:31:14.010 回答
4

我做的略有不同,因为正如蒂莫所说的那样工作并不简单,这里是:

query.from(play);
query.where( Expressions.stringPath(play, "name").eq("New play") );

我知道它也可以通过单独执行来实现:

StringPath column = Expressions.stringPath(play, "name");

query.from(play);
query.where( column.eq("New play") );
于 2015-12-17T16:44:19.487 回答