Я пытался создать запрос с использованием dblink с некоторыми параметрами. Я использую Hibernate 4, а база данных - MSSQL.NativeQuery с OpenQuery и параметрами
Но я либо получить:
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);
Или я
java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
если запрос
@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);
(Обратите внимание на разницу в одинарных кавычках после LIKE).
Если я не использую никаких параметров, я получаю правильный ответ. Таким образом, этот запрос:
@Query(nativeQuery=true, value="SELECT * FROM OPENQUERY([linked_server], 'SELECT * FROM TABLE WHERE COLUM1 = ''0145A'' AND COLUMN2 LIKE ''%ABC%'' ');")
Фактически работает.
Я как бы потерял эту проблему, я попытался найти ответ, но не получил нигде рядом с действительным.
Я должен использовать OPENQUERY, поскольку связанный сервер - это огромная база данных Oracle, так как мне это нужно, чтобы сделать фактическую обработку.
Заранее спасибо.