【发布时间】:2016-10-10 13:58:54
【问题描述】:
我一直在尝试使用带有一些参数的 dblink 创建查询。 我使用的是 Hibernate 4,数据库是 MSSQL。
但我要么得到:
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 数据库,因为我需要它来进行实际处理。
提前致谢。
【问题讨论】:
标签: java hibernate spring-mvc openquery nativequery