gpt4 book ai didi

sql - JPQL 中的空白 FROM 子句?

转载 作者:行者123 更新时间:2023-12-01 11:37:07 25 4
gpt4 key购买 nike

我正在使用 JPQL 选择来访问 Oracle DB 函数:select FUNCTION('function_name', 'foo', 1234) from com_mycompany_bar obj
这按预期工作,并且确实调用了该函数。问题是我实际上不需要 FROM子句,宁愿让它为空,而不必为了符合语法而访问实体。

我在这里的最佳选择是什么?

最佳答案

我看到几个可能的答案:

在标准 JPA 中有两个选项,都涉及 Oracle DUAL “ table ”

  • map DUAL到实体并在 FROM 中使用它条款。是比较“JPQL”的方式,但也比较复杂:

  • 在 Java 代码中:
    @Entity(name = "Dual")
    @Table(name = "SYS.DUAL")
    public class Dual {
    @Id
    @Column(name = "DUMMY")
    private String dummy;
    }

    在 orm.xml 中:
    <named-query name="yourQuery">
    <query><![CDATA[
    SELECT FUNCTION('function_name', 'foo', 1234) FROM Dual d
    ]]>
    </query>
    </named-query>

    在客户端代码中:
    Query q = entityManager.createNamedQuery("yourQuery");
  • 只需使用使用 DUAL 的 native 查询

  • 在 orm.xml 中:
    <named-native-query name="yourQuery">
    <query><![CDATA[
    SELECT function_name('foo', 1234) from sys.dual
    ]]>
    </query>
    </named-native-query>

    在客户端代码中:
    Query q = entityManager.createNativeQuery("yourQuery");

    作为最后一个选项,您可以使用 JPA 的一些 JPA 实现扩展并避免 DUAL :
  • Eclipse链接:
  • http://wiki.eclipse.org/EclipseLink/Examples/JPA/StoredProcedures
  • http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_namedstoredprocedurequery.htm
  • http://ronaldoblanc.blogspot.com.br/2012/05/jpa-eclipselink-and-complex-parameters.html
  • 休眠:
  • http://objectopia.com/2009/06/26/calling-stored-procedures-in-jpa/
  • jpa calling stored procedure with output cursor
  • How to call Oracle Function or Procedure using Hibernate 4 (EntityManager) or JPA 2
  • 关于sql - JPQL 中的空白 FROM 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25686335/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com