0

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

用户可以搜索的各种搜索组合是..

  1. INS_USER_ID 和 DateRange
  2. CUST_ACCT_ID
  3. CUST_ACCT_ID 和 DateRange

询问..

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 进行了映射。

我已经阅读了谷歌的各种方法,有人可以告诉我以下哪种休眠方法最适合我的场景。

  1. 命名查询
  2. 本机查询
  3. 标准 API

我在考虑 NamedQuery,但还没有看到跨多个表的 NamedQuery,一个例子会很棒。谢谢你。

4

1 回答 1

0

例子

@Entity
@NamedQuery(name="findSalaryForNameAndDepartment",
    query="SELECT e.salary " +
          "FROM Student e" +
          "WHERE e.department.name = :deptName AND " +
          "      e.name = :empName")

您也可以在此加入部门表并稍微更改查询

对于日期使用参数

em.createNamedQuery("xxx").setParameter("srtartDate", ...).setParameter("endDate",..)
于 2013-04-24T07:58:52.343 回答