mysql - HQL with join of 3 tables and where condition -
we had report generating hql join between 2 tables worked correctly. changes db design, need same thing 3 tables now. not getting desired results.
earlier, users had single role in system , role part of user table. in case following hql worked
<![cdata[select new com.test.reportsmodel.agentreport(u, count( t.transactionid ), sum(case when t.status = 'created' 1 when t.status = 'paid' 1 when t.status = 'delivered' 1 else 0 end )) user u left join u.transactionsforagent t (t.invoicedate between :startdate , :enddate) u.role = 'externalagent' group u.userid]]>
now db design has changed allows users have multiple roles in system. hence useraccess table has been created has userid , role in it. take care of change above hql has been updated
<![cdata[select new com.test.reportsmodel.agentreport(u, count( t.transactionid ), sum(case when t.status = 'created' 1 when t.status = 'paid' 1 when t.status = 'delivered' 1 else 0 end )) user u left join u.transactionsforagent t (t.invoicedate between :startdate , :enddate) left join u.useraccesses (a.role = 'externalagent') group u.userid]]>
but query not giving correct result. there quite few hqls need modification because of change in role. wanted understand best way incorporate change in hql.
Comments
Post a Comment