2017-12-15 4 views
0

オブジェクトツリーとしてLikeを使用しているため、私の名前付きクエリはかなり長いです。名前付きクエリでLikeとInを併用できますか:Hibernate:名前付きクエリでLikeとInを同時に使用できますか?

#Mysql 
@NamedQuery(name="getDhahush", query="SELECT d.pid FROM Dhahush d WHERE lower(d.person.telephon.mobile.mobno) LIKE lower('78129%') OR lower(d.person.telephon.mobile.mobno) LIKE lower('8129%') OR lower(d.person.telephon.mobile.mobno) LIKE lower('5159%')") 

基本データベースはMySQLです。

答えて

0
LIKE

がIN

e.g. 
mobno LIKE IN ('781%','719%') 

と接続詞でを使用することはできません。しかし、最初に、それは数であるとしませんので、私は下(d.person.telephon.mobile.mobno)から下を削除します2番目に最も重要なのはlower()関数が既に "mobno"列の任意のインデックスを使用するのに失敗することです 乾杯。

0

代わりにANYを使用してください。

あなたのクエリはPostgreSQLでこのようなものになり:

select 'foo' like any(array['f%', '%o%', '&t']); 

MySQLはその正確な構文をサポートしていませんが、あなたがサブクエリと似たような操作を行うことができます。

select 'foo' like any(select 'f%' union select '%o%' union select '&t'); 
関連する問題