使用 Hibernate 的 Criteria API,我可以使用带有 ilike 限制的 concat 吗?

ege*_*ari 4 java sql hibernate concat hibernate-criteria

直觉上,我想做的是这样的:

Restrictions.ilike("concat(user.firstName, ' ', user.lastName)",
    text.toLowerCase() + "%")
Run Code Online (Sandbox Code Playgroud)

但是,我知道这行不通,因为concat(user.firstName, ' ', user.lastName)这不是 Hibernate 理解的属性,即使这是我在常规 SQL 语句中作为 where 子句的一部分键入的内容。

有没有什么简单的方法可以使用 Hibernate Criteria API 来限制,或者我是否必须依靠旧的 HSQL?

谢谢

Pet*_*vic 6

一种解决方案是fullNameUser类中定义属性。

@Formula(value="first_name || ' ' || last_name")
private String fullName;
Run Code Online (Sandbox Code Playgroud)

然后使用该文件Criteria

criteria.add(Restrictions.ilike("fullName", text.toLowerCase() + "%"));
Run Code Online (Sandbox Code Playgroud)