如何在现有的 Hql 或 SQL 查询中应用“With UR”子句?如何在我的查询为字符串格式的 Java 文件中附加它
Posted
技术标签:
【中文标题】如何在现有的 Hql 或 SQL 查询中应用“With UR”子句?如何在我的查询为字符串格式的 Java 文件中附加它【英文标题】:How to apply "With UR" clause in existing Hql or SQL queries? How can I append this in Java file where my query is in string format 【发布时间】:2022-01-19 15:54:41 【问题描述】:所以我在其中一个 Java 文件中有这个 SQL 查询,如下所示:(我给出的是示例而不是真实的)
@Query( "Select T1.ID" +
", T1.CD" +
", T1.Date" +
", T1.Name" +
" From Table1 T1" +
" Join Table2 T2 " +
" On T1.ID = T2.ID" +
" Where T1.CD in
("test1","test2")" +
" And NOT EXISTS" +
" (Select 1 From Table2 T3"
+
" Where T3.ID = T1.ID +
" And T3.Name NOT
IN('P','Q','R')"+
" )")
List<Object[]> methodToRetrieve
(@Param("sequence")String
sequence,@Param("code") code);
谁能告诉我在上面的查询中哪里可以添加“With UR”。
【问题讨论】:
这不是 mysql 代码所以我删除了那个标签 我会问你为什么首先需要WITH UR
。尽管它有一些有效的用例,但对于并不真正需要它的情况来说,它使用得太多、太频繁了。
【参考方案1】:
PSA:在您的帖子中包含您的 Db2 平台/版本;如果适用,还可以考虑使用特定于平台的 db2 标记(db2-luw 或 db2i)
isolation-clause
出现在文档中的 fullselect
之后
所以你的代码应该是
@Query( "Select T1.ID" +
", T1.CD" +
", T1.Date" +
", T1.Name" +
" From Table1 T1" +
" Join Table2 T2 " +
" On T1.ID = T2.ID" +
" Where T1.CD in
("test1","test2")" +
" And NOT EXISTS" +
" (Select 1 From Table2 T3"
+
" Where T3.ID = T1.ID +
" And T3.Name NOT
IN('P','Q','R')"+
" ) WITH UR")
List<Object[]> methodToRetrieve
(@Param("sequence")String
sequence,@Param("code") code);
【讨论】:
以上是关于如何在现有的 Hql 或 SQL 查询中应用“With UR”子句?如何在我的查询为字符串格式的 Java 文件中附加它的主要内容,如果未能解决你的问题,请参考以下文章
如何将任何给定的 SQL/HQL 选择查询动态转换为等效计数查询?