2016-10-10 5 views
0

일부 매개 변수가있는 dblink를 사용하여 쿼리를 작성하는 데 triyng를 사용했습니다. 나는 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 이었지만, 유효한 질문에 가깝지 않았다.

링크 된 서버는 거대한 오라클 데이터베이스이므로 OPENQUERY를 사용해야합니다. 실제로 처리하기 위해 필요합니다.

미리 감사드립니다.

답변

0

마지막으로 나는 querys가 제대로 작동하도록 관리하지 못했습니다.

문제를 해결하기 위해 데이터베이스에 쿼리를 사용하여 일부 저장 프로 시저를 만들었고 @Query 주석은 중첩 된 아포스트로피를 다루지 않아 모든 것을 해결했습니다.

생활이 쉽고 계속 진행됩니다.

안녕히 계십시오.