如何在现有的 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 文件中附加它的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LINQ 或 HQL 执行以下 SQL 查询

如何将任何给定的 SQL/HQL 选择查询动态转换为等效计数查询?

将列表传递给 HQL 或 SQL 中的 IN 子句?

如何在现有的 Web 应用程序中使用 apache spark

Hibernate:基于HQL实现数据查询

如何在现有的 iOS 应用程序中开始集成汽车游戏?