2016-08-19 1 views
0

Ci-dessous est mon SQL que je veux convertir en HQL. Quelqu'un pourrait m'aider avec ça ? Je signale aussi mon HQL qui est actuellement me donne une exception nullpointer -Inner join multiples dans HQL

select ti.tax_id_no, 
    u1.user_id, 
    u1.user_nm_fst, 
    u1.user_nm_lst, 
    u1.user_ph_no, 
    u1.user_email 
    from pcmp.tax_identifier ti 
    inner join (select ucax.user_id, ucax.cust_id 
      from pcmp.users_customer_access_xref ucax 
      where ucax.ptcp_typ_cd = 'insrd' 
      and ucax.void_ind = 'n' 
      and ucax.user_cust_accs_xref_end_dt is null) ucax1 
on ucax1.cust_id = ti.cust_id 
inner join (select u.user_id, 
       u.user_nm_fst, 
       u.user_nm_lst, 
       u.user_ph_no, 
       u.user_email 
      from pcmp.users u 
      where u.user_end_dt is null 
      and u.user_void_ind = 'n') u1 
on u1.user_id = ucax1.user_id 
where ti.tax_id_no = '830204947'-- '465202523' 
and ti.void_ind = 'n' 
and ti.tax_id_end_dt is null 

J'ai essayé d'utiliser la requête ci-dessous, mais a couru dans des erreurs -

 String queryString = "select u from User u" 
       + " INNER JOIN u.ucax userCustomerAccessXref"     
       + " INNER JOIN u.ti taxIdentifier" 
       + " where taxIdentifier.tax_id_id = ?1"; 

L'exception que je reçois l'aide de la requête ci-dessus est -

java.lang.NullPointerException

org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:383) 
org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3585) 
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3366) 
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3239) 
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:726) 

Répondre

0

nous faire savoir que versi d'hibernate vous courez. il serait probablement utile d'indiquer votre problème aussi reproductible que possible pour les autres. votre jointure interne semble être très compliqué pour quiconque n'est pas dans votre domaine d'affaires ...

chaque fois que vous démarrez des requêtes en concaténant des chaînes ... pour moi c'est une indication que vous avez perdu le contrôle sur votre domaine d'activité depuis que vous ne choisissez pas la façon de spécifier les requêtes jpa/hibernate externalisées.