我有以下问题/问题:
我正在使用JPQL(JPA 2.0和eclipselink),我想创建一个查询,它按以下方式对结果进行排序: 首先,结果按最佳匹配排序。之后应该出现劣质的比赛。 我的对象基于一个名为“人物”的简单类。属性:
{String Id,
String forename,
String name}
例如,如果我正在寻找" Picol"结果应如下所示:
[{129, Picol, Newman}, {23, Johnny, Picol},{454, Picolori, Newta}, {4774, Picolatus, Larimus}...]
PS:我已经考虑过使用两个查询,第一个是使用" equals"第二个用"喜欢",虽然我不太确定如何连接两个查询结果......?
希望得到你的帮助和提前感谢, 弗洛里安
答案 0 :(得分:0)
如果您的问题似乎暗示,您只有两个组(第一组:forename或name等于搜索的字符串;第二组:forename或name包含搜索的字符串),如果给定组的所有人都拥有相同的“匹配得分”,然后使用两个查询确实是一个很好的解决方案。
首先查询:
select p from Person p where p.foreName = :param or p.name = :param
第二次查询:
select p from Person p where (p.foreName like :paramSurroundedWithPercent
or p.name like :paramSurroundedWithPercent)
and p.foreName != :param
and p.name != :param
执行两个查询(每个返回一个List<Person>
),并将第二个列表的所有元素添加到第一个(使用addAll()
方法)