首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有OpenQuery和参数的NativeQuery

带有OpenQuery和参数的NativeQuery
EN

Stack Overflow用户
提问于 2016-10-10 21:58:54
回答 1查看 425关注 0票数 0

我一直在尝试使用带有一些参数的dblink创建一个查询。我使用的是Hibernate 4,数据库是MSSQL。

但我要么得到:

代码语言:javascript
运行
复制
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.

如果我的查询是

代码语言:javascript
运行
复制
@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);

否则我会得到

代码语言:javascript
运行
复制
java.lang.IllegalArgumentException: Parameter with that position [1] did not exist

如果查询是

代码语言:javascript
运行
复制
@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后面的单引号的区别)。

如果我不使用任何参数,我会得到一个正确的答案。所以这个查询:

代码语言:javascript
运行
复制
@Query(nativeQuery=true, value="SELECT * FROM OPENQUERY([linked_server], 'SELECT * FROM TABLE WHERE COLUM1 = ''0145A'' AND COLUMN2 LIKE ''%ABC%'' ' );")

实际上是有效的。

我对这个问题有点不知所措,我一直在努力寻找答案,但远未找到一个有效的答案。

我必须使用OPENQUERY,因为链接服务器是一个巨大的Oracle数据库,因为我需要它来进行实际处理。

提前谢谢。

EN

Stack Overflow用户

发布于 2016-10-19 15:31:50

最后,我没有设法使查询正常工作。

为了解决这个问题,我在数据库中创建了一些带有查询的存储过程,这样就解决了所有问题,因为@Query注释不必处理嵌套的撇号。

现在的生活很简单,而且还在继续。

再见。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39960051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档