我使用Query DSL生成的实体EntitySerializer,以便使用QueryDSL (与SpringData集成)来查询JPA实体。
我从客户端接收属性名称,并希望为可以添加(和)到其他谓词的属性创建谓词。
我不知道如何从EntitySerializer获取与我的属性名匹配的谓词/路径。例如,假设我们有一个Person实体(具有自动生成的QPerson类),它有一个我想要过滤的“name”属性(最后我想创建一个泛型方法)。下面是泛型方法:
Public Predicat getPredicatByPropertyName(String propertyName) {
QPerson p = QPerson.person;
person.getPredicat(“propertyName”).like(“tom”);
}
发布于 2012-11-15 07:31:14
要创建字符串类型的属性,只需使用以下代码片段
new StringPath(p, propertyName)
,然后可以像这样使用它来创建谓词实例。
new StringPath(p, propertyName).like("tom")
发布于 2015-12-17 16:44:19
我做的有点不同,因为正如Timo所说的那样,它不能直接工作,这是它:
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") );
https://stackoverflow.com/questions/13379043
复制相似问题