1

我使用 Criteria Query 搜索表并使用名称字段对其进行过滤。我过滤名称为 %user-entered-name% 的记录。
然后使用名称列对结果进行排序。现在我有一个问题。我将它排序如下:

  • 姓名(第一个列表记录他的姓名等于用户输入的姓名)
  • name*(第二个列表记录他的名字以用户输入的名字开头)
  • *name*(在最后一个列表记录中 hist name 包含用户输入的名称)

jpa有什么解决方案吗?

多谢。

4

1 回答 1

1

一种解决方案是使用语句检索称为相关性的附加列。CASE WHEN可以定义如下:

c.multiselect(employee.get("name"),
    cb.selectCase()
    .when(cb.equal(employee.get("name"), "user-defined-name"), 3)
    .when(cb.like(employee.get("name"), "user-defined-name%"), 2)
    .when(cb.like(employee.get("name"), "%user-defined-name%"), 1)
    .otherwise(0)
    .alias("relevance"))
于 2014-07-23T10:53:27.850 回答