直观地说,我想做的是这样的事情:
Restrictions.ilike("concat(user.firstName, ' ', user.lastName)",
text.toLowerCase() + "%")
但是,我知道这不起作用,因为concat(user.firstName, ' ', user.lastName)
不是Hibernate理解的属性,即使这是我在常规SQL语句中作为where子句的一部分键入的内容。< / p>
有没有简单的方法可以使用Hibernate Criteria API进行限制,或者我是否需要依靠优质的HSQL?
由于
答案 0 :(得分:4)
一种解决方案是在fullName
类中定义User
属性。
@Formula(value="first_name || ' ' || last_name")
private String fullName;
然后在Criteria
,
criteria.add(Restrictions.ilike("fullName", text.toLowerCase() + "%"));
答案 1 :(得分:0)
我在SQL上有点软盘,所以声明可能不是100%准确。
显然,这不是ilike
但是如果你想使用SQL,为什么不使用sqlRestriction
代替参数?
Restrictions.sqlRestriction("select * from user where concat(user.firstName, ' ', user.lastName) like ?", text.toLowerCase() + "%", StandardBasicTypes.STRING);
我认为我的目标是能够制作一个便携式限制,在这种情况下,这可以用于你的尝试ilike。