2011-07-21 4 views
0

私たちは、AS/400に接続するためにHibernateを使用しています。 LIKE句を使用してAS/400 のクエリに関する問題が発生しています。LIKE句を使用したAS/400のクエリに関する問題

次のエラーが示されている:

ます。java.sql.SQLException:LIKEの[SQL0131]オペランド互換性がないか、有効でない

私のクエリは、その自動Hibernateが生成される。

select tab_parame0_.C1IMCD as C1_560_, tab_parame0_.C1NINB as C2_560_, 
tab_parame0_.C1JXCD as C3_560_, tab_parame0_.C1HLTX as C4_560_, tab_parame0_.C1HMTX as C5_560_, 
tab_parame0_.C1HDST as C6_560_, tab_parame0_.C1NGNB as C7_560_, tab_parame0_.C1NJNB as C8_560_, 
tab_parame0_.C1NFNB as C9_560_, tab_parame0_.C1NHNB as C10_560_, tab_parame0_.C1HCST as C11_560_ 
from RYC1REP tab_parame0_ 
where lower(tab_parame0_.C1HLTX) like lower(?) 
order by tab_parame0_.C1IMCD asc 
fetch first 10 rows only 
+0

使用しているSQL文は何ですか? –

+0

私のクエリが休止状態 によって生成されたその自動で休止状態:C6_560_としてC1_560_としてtab_parame0_.C1IMCD、tab_parame0_.C1NINB C2_560_として、tab_parame0_.C1JXCD C3_560_として、tab_parame0_.C1HLTX C4_560_として、tab_parame0_.C1HMTX C5_560_として、tab_parame0_.C1HDSTを選択し、 (tab_parame0_.C1HLTX)下RYC1REPのtab_parame0_からC7_560_、C8_560_、C9_560_としてtab_parame0_.C1NFNBとしてtab_parame0_.C1NJNB、C10_560_としてtab_parame0_.C1NHNB、C11_560_としてtab_parame0_.C1HCSTとしてtab_parame0_.C1NGNB tab_parame0_.C1IMCDのASC低い(?)のような順番最初の10行しか取得しない –

+0

(?)のように、AS/400クエリでLIKE '%searchfor%'を参照するような文が必要です。 –

答えて

3

SQL0131は、タイプの不一致を示します。

どのデータ型がtab_parame0_.C1HLTXですか?クエリパラメータはどのようなデータ型ですか?

比較用のHQL/JPQLクエリソースコードを含めてください。

AS/400が受信しているものを正確に表示するには、SQLトレースを設定する必要があります。

私はあなたのソースクエリにLIKE :parameterLIKE LOWER(:parameter)を変更して、パラメータを設定し、それがどのように機能するかを見たときに.toLowerCase()を使用することをお勧めしHow do I obtain trace information from my Java program using the Toolbox?


を参照してください。

+0

AS400のデータ型はCHARで、文字データも送信しています –

+0

私の回答を更新しましたHQLクエリソースコードを再リクエストし、ツールボックスのjdbcドライバでトレースを有効にするリンクを提供しました。 – jamesallman

+0

私はHQLを使用していません。JPAを使用しており、JPAによって生成されたクエリは次のとおりです。C1_560_としてtab_parame0_.C1IMCD、C2_560_としてtab_parame0_.C1NINB、 としてtab_parame0_.C1JXCDをC3_560_、tab_parame0_.C1HLTXをC4_560_、tab_parame0_ C5_560_、 C7_560_、C8_560_としてtab_parame0_.C1NJNBとしてC6_560_、tab_parame0_.C1NGNBとしてtab_parame0_.C1HDST、 C10_560_、tab_parame0_.C1HCSTとしてC9_560_、tab_parame0_.C1NHNBとしてtab_parame0_.C1NFNBとして.C1HMTX RYC1REPからC11_560_ が(下をtab_parame0_としてtab_parame0_.C1HLTX)lower(?) order by tab_parame0_.C1IMCD asc 最初の10行だけを取り出す –

関連する問題