使用jpa多表进行查询

时间:2014-09-20 19:24:31

标签: java oracle hibernate jpa

我有一个jpql查询来连接多表但是当我调试它时会返回null结果 当我在oracle中执行它时工作正常,表没有任何关系外键只是列是相同的,所以你能帮我解决这个问题吗

Query qDetailCnx = em.createQuery(
            "select distinct t1.pdpStartTime, 
                             t1.name1 ,
                             t1.ipAddr, 
                             t1.imsi,t1.tac_code, 
                             t4.constructeur, 
                             t4.modele, 
                             t4.typeTerm, 
                             t2.type,
                             t5.type,
                             t3.type, 
                             t3.signification 
    from ConnexionEntity t1, 
         RatEntity t2, 
         EndRATEntity t5, 
         EndCauseEntity  t3, 
         HandsetEntity t4 
    where t1.name2=:name2 
    and starttime BETWEEN to_date(:startDate,'dd/mm/yyyy HH24:mi:ss') 
    and to_date(:endDate,'dd/mm/yyyy HH24:mi:ss') 
    and t1.rat= t2.code 
    and t1.endrat= t5.code 
    and t1.endcause = t3.code 
    and t1.tac_code=t4.code 
    order by pdpstarttime");
qDetailCnx.setParameter("name2",choix.getMsisdn() );
qDetailCnx.setParameter("startDate", convert.convertDateTime(choix.getStartdate()) );
qDetailCnx.setParameter("endDate", convert.convertDateTime(choix.getEndDate()));

我的查询由hibernate执行: Hibernate:选择不同的connexione0_.PDPSTARTTIME作为col_0_0_,connexione0_.NAME1作为col_1_0_,connexione0_.IPADDR作为col_2_0_,connexione0_.IMSI作为col_3_0_,connexione0_.TAC_CODE作为col_4_0_,handsetent4_。 CONSTRUCTEUR为col_5_0_,handsetent4_。 MODELE为col_6_0_,handsetent4_。 TYPETERM为col_7_0_,ratentity1_.TYPE为col_8_0_,endratenti2_.TYPE为col_9_0_,endcauseen3_.TYPE为col_10_0_,endcauseen3_。从KPI.CONNEXION_DWHS connexione0_,KPI标记为col_11_0_。 RAT ratentity1_,KPI。 ENDRAT endratenti2_,KPI.END_CAUSE endcauseen3_,KPI。 HANDSET handsetent4_ where connexione0_.NAME2 =?和(to_date之间的开始时间(?,'dd / mm / yyyy HH24:mi:ss')和to_date(?,'dd / mm / yyyy HH24:mi:ss'))和connexione0_.RAT = ratentity1_.CODE和connexione0_ .ENDRAT = endratenti2_.CODE和connexione0_.ENDCAUSE = endcauseen3_.CODE和connexione0_.TAC_CODE = handsetent4_.CODE order by pdpstarttime

0 个答案:

没有答案