[英]Using Hibernate's Criteria API, can I use concat with ilike restrictions?
直觀地說,我想做的是這樣的:
Restrictions.ilike("concat(user.firstName, ' ', user.lastName)",
text.toLowerCase() + "%")
但是,我知道這不起作用,因為concat(user.firstName, ' ', user.lastName)
不是Hibernate理解的屬性,即使這是我在常規SQL語句中鍵入的屬性where子句。
是否有任何簡單的方法可以使用Hibernate Criteria API進行限制,或者我是否需要依靠優質的HSQL?
謝謝
一種解決方案是在User
類中定義fullName
屬性。
@Formula(value="first_name || ' ' || last_name")
private String fullName;
然后在Criteria
使用該文件,
criteria.add(Restrictions.ilike("fullName", text.toLowerCase() + "%"));
我在SQL上有點軟盤,所以聲明可能不是100%准確。
顯然,這不是一個ilike
但如果你想使用SQL,為什么不使用sqlRestriction
而不是參數?
Restrictions.sqlRestriction("select * from user where concat(user.firstName, ' ', user.lastName) like ?", text.toLowerCase() + "%", StandardBasicTypes.STRING);
我假設目標是能夠制作一個便攜式限制,在這種情況下,這可以為您的嘗試ilike做好准備。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.