【发布时间】:2013-10-31 09:43:36
【问题描述】:
我想将一个oracle存储过程重写为java代码,在查询字符串中选择具有连接值的数据进行比较,方法如下:
Query qString =
"SELECT Obj " +
"FROM MyTable Obj2 WHERE ( Obj2.value1 || Obj2.value2 ) in " +
"(SELECT Obj2.value1 || MAX(Obj2.value2) FROM MyTable Obj2 WHERE Obj2.value2 >= :param GROUP BY Obj2.value1) " +
"ORDER BY Obj.value2, Obj.value1";
query = entityManager.createQuery(qString);
query.setParameter("param ", param );
当我在 weblogic 服务器上将查询作为 web 服务运行时,“|”出现错误特点。 我可以用什么来代替 ||运算符得到相同的结果?
【问题讨论】:
-
这是无效的 jpa 查询。但是,我无法理解该查询。
SELECT Obj2.value1 || MAX(Obj2.value2)是串联吗? -
答案没有解决你的问题吗?
-
@vels4j 是的,它在 Oracle 中。
-
@vels4j:这完全有效。 (标准)SQL 连接运算符是
||,尽管一些 DBMS 选择忽略该标准。 -
我删除了两个明显不正确的右括号。由于这些括号不会影响您的问题,因此我将其作为编辑而不是答案,并将此评论留在这里,以便您了解此更改。如果@nos 解决方案适合您(我认为应该),那么请接受他的回答。
标签: java sql oracle entitymanager concat