簡體   English   中英

使用Hibernate的Criteria API,我可以使用concid和ilike限制嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM