私はtriyngを使用して、いくつかのパラメータを持つdblinkを使用してクエリを作成しました。 私はHibernate 4を使用しています。データベースはMSSQLです。OpenQueryとパラメータを使用したNativeQuery
しかし、私のどちらかが得る:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.
私のクエリは
@Query(nativeQuery=true, value="SELECT * FROM OPENQUERY([linked_server], 'SELECT * FROM TABLE WHERE COLUM1 = ''0145A'' AND COLUMN2 LIKE ':prefix'');")
public List<CPNT023_PART> GET_PART_AND_ANALYST(@Param(value="prefix") String prefix);
であるか、クエリが
@Query(nativeQuery=true, value="SELECT * FROM OPENQUERY([linked_server], 'SELECT * FROM TABLE WHERE COLUM1 = ''0145A'' AND COLUMN2 LIKE '':prefix'' ');")
public List<CPNT023_PART> GET_PART_AND_ANALYST(@Param(value="prefix") String prefix);
であれば、私は
java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
を取得する場合
(LIKE後の一重引用符の違いに注意してください)。
パラメータを使用しない場合は、正しい答えが得られます。したがって、このクエリ:
@Query(nativeQuery=true, value="SELECT * FROM OPENQUERY([linked_server], 'SELECT * FROM TABLE WHERE COLUM1 = ''0145A'' AND COLUMN2 LIKE ''%ABC%'' ');")
実際に動作します。
私はちょっとこの問題で迷っています。私は答えを探すためにtriyngでしたが、有効なものの近くにはどこもありませんでした。
私は実際の処理を行うために必要なので、リンクサーバーは巨大なOracleデータベースであるため、OPENQUERYを使用する必要があります。
ありがとうございます。