Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 命名查询、本机查询或条件API_Java_Oracle_Hibernate_Jpa - Fatal编程技术网

Java 命名查询、本机查询或条件API

Java 命名查询、本机查询或条件API,java,oracle,hibernate,jpa,Java,Oracle,Hibernate,Jpa,我需要以报告的形式报告来自3个不同表的数据 用户可以使用的各种搜索组合有 INSU用户ID和日期范围 客户账户ID 客户帐户ID和日期范围 询问 select DISTINCT W.CUST_ACCT_ID, W.INS_USER_ID, WS.STTI_DATE, WS.STTI_AMT, WC.CMMT from T_WRK W INNER JOIN T_WRK_STTI WS ON W.WRK_STTI_ID = WS.WRK_STTI_ID INNER JO

我需要以报告的形式报告来自3个不同表的数据

用户可以使用的各种搜索组合有

  • INSU用户ID和日期范围
  • 客户账户ID
  • 客户帐户ID和日期范围
  • 询问

    select DISTINCT W.CUST_ACCT_ID, W.INS_USER_ID, WS.STTI_DATE, WS.STTI_AMT, WC.CMMT  from T_WRK W
           INNER JOIN T_WRK_STTI WS ON W.WRK_STTI_ID = WS.WRK_STTI_ID
           INNER JOIN T_WRK_CMMT WC ON W.WRK_ID = WC.WRK_ID
           WHERE W.CUST_ACCT_ID = 90610194 AND WS.STTI_DATE BETWEEN '01-JAN-12' AND '31-DEC-12'
    
    
    select DISTINCT W.CUST_ACCT_ID, W.INS_USER_ID, WS.STTI_DATE, WS.STTI_AMT, WC.CMMT  from T_WRKCS W  
           INNER JOIN T_WRKCS_STTI WS ON W.WRKCS_STTI_ID = WS.WRKCS_STTI_ID
           INNER JOIN T_WRKCS_CMMT WC ON W.WRKCS_ID = WC.WRKCS_ID
           WHERE W.INS_USER_ID = 231 AND WS.STTI_DATE BETWEEN '01-JAN-12' AND '31-DEC-12' 
    
    所有现有表都已使用Hibernate/JPA进行映射

    我已经读够了google中的各种方法,有人能告诉我以下哪种hibernate方法最适合我的场景吗

  • 命名查询
  • 本地查询
  • 标准API
  • 我正在考虑NamedQuery,但还没有看到跨越多个表的NamedQuery,举个例子就好了。谢谢。

    您还可以在那里加入department表并稍微更改查询

    对于日期使用参数

    em.createNamedQuery("xxx").setParameter("srtartDate", ...).setParameter("endDate",..)
    

    如果它是从单个实体/表中选择的(这里是学生),那么使用命名查询就可以了,但在我的例子中,我需要从多个表中选择,因为命名查询只是绑定到它所在的表。我正在寻找一个select跨越多个表的示例。我现在无法尝试,但类似这样的sql也可以在命名查询中使用:select e.salary FROM Student e,Department d,其中e.Department_id=d.id和d.name=:deptName和e.name=:empName
    em.createNamedQuery("xxx").setParameter("srtartDate", ...).setParameter("endDate",..)