【发布时间】:2014-08-15 08:44:30
【问题描述】:
我有一个简单的CriteriaQuery,我在其中将简单的搜索String 与Person 实体中的字段整体进行模式匹配...例如searchString 总是用%searchString% 装饰
//using MetaModel
Expression<List<Records>> records = root.get(Person_.records);
Expression<String> param = builder.parameter(String.class);
//pseudo code(i think i need something like this here)
Predicate myPred = for all records (any record.FIELD LIKE searchString)
Path<Integer> status = root.get("status");
criteriaQuery.where(
builder.or(
builder.like(
root.<String>get("name"), searchString
),
builder.like(
root.<String>get("second_name"), searchString
)
//pseuso code (i thin i need to check my predicate here?)
builder.like(mypredicate)
),
builder.equal(status,value)
);
Person 对象可以包含许多 Record 对象。我想更新上面的查询,为Records 列表的每个元素的每个适用字段 (String) 包含一个类似的“喜欢”模式匹配。我获得了Records,如下所示:
//using MetaModel
Expression<List<Records>> records = root.get(Person_.records);
Expression<String> param = builder.parameter(String.class);
我已经用我“认为”我想要的伪代码更新了我的代码。非常感谢任何帮助。
【问题讨论】:
-
您能否提供一些有关您遇到的问题的其他详细信息,例如:有关您正在尝试实现的目标的更多详细信息,以及您正在尝试的内容以及有关如何或为什么无法正常工作的详细信息?
-
嗨,肖恩,感谢您的回复。试图解决的问题:搜索与搜索字符串匹配的所有数据库条目。这在构建用于搜索上述“基本字段”的条件时很好。我现在想扩展搜索以包括嵌入的 Lissy of Record 对象中的条目。例如,如果在“tim”上搜索在姓名或姓氏中具有匹配字段的任何人 obj,或者如果任何记录 obj 具有匹配字段,则将返回人 obj。
-
@SeanMickey 嗨,肖恩,感谢您的回复。试图解决的问题:搜索与搜索字符串匹配的所有数据库条目。如上所述构建搜索“基本字段”的条件时,这很好。我现在想扩展搜索以包括 Record 对象的嵌入式 lisr 中的条目。例如,如果在 'tim' 上搜索任何在姓名或姓氏中具有匹配字段的人员 obj,或者如果其任何记录 obj 具有匹配字段,则将返回人员 obj。
-
@SeanMickey 我已经用我认为我需要的伪代码更新了示例代码......希望这能解释一下吗?感谢您的回复...
标签: hibernate jpa orm jpa-2.0 criteria-api