2016-10-10 11 views
0

Я пытался создать запрос с использованием 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, так как мне это нужно, чтобы сделать фактическую обработку.

Заранее спасибо.

ответ

0

Наконец-то я не смог правильно обработать запросы.

Чтобы решить проблему, я создал несколько хранимых процедур в базе данных с запросами и решил все, так как аннотация @Query не должна иметь дело с вложенными апострофами.

Жизнь сейчас прост и продолжается.

До свидания.

 Смежные вопросы

  • Нет связанных вопросов^_^