select HQL with possible NULL Values -


I have a class transaction that is a sender in the transaction Sender has a field 'test' Transaction.Sender is redundant Or maybe not.

I am trying to get all the transactions from sender = zero or sender. Test = true

I tried HQL

 from transaction t> select  where ((tcender is empty) or (t is true)) * transaction t Select * from where ((TCunder is empty) or (TS & RTEET) (TRUE)) Select * Transaction from T where ((t.sender is zero) or (t.sender.test = true))  < / Pre> 

And I'm only getting the transaction with 't.sender.test true', I'm not getting the transaction with 't.sender is zero.

If I only try:

  select from the transaction T where t. The sender is zero.  

The sender is empty '

Can anyone help me?

Thanks

Edit: My code

  stringbuilder q = new stringbilder ("Transaction T where MONTH (t.dateTransfered) = = months Year (T.dateTransfered) =: year "); If (test.getParameter ("test")); if (test) {q.append ("and ((t. Edit):  
  Public list & lt; transactions & Gt; (HttpServletRequest request, date of date, integer start, end end) {StringBuilder q = New StringBuilder ("From transaction T where MONTH (t.dateTransfered) = =: months and years (t.dateTransfered) =" "year); If (Val.required (request.getParameter ("niv") q.append ("and (t.sender.id =: niv or t.receiver.id =: niv)"); if (Val.required (request .getParameter ("status")) q.append ("and t.transactionStatus =: status"); if (Val.re Quired (request.getParameter ("serviceType")) q.append ("and transactionServiceType =: serviceType"); if (Val.required (request.getParameter ("source")) {q.append ("and transactionSource =: Source "); if (Val.required (request.getParameter (" sourceMethod "))) {q.append (" and transactionSourceMethod =: sourceMethod "); }} Boolean test = wrong; If (test.getParameter ("test")); if (test) {q.append ("and ((t. Is) or (t.sender.test = true)) "} other {q.append (" and (t.sender.test = false and t.receiver.test = false) ");}} and (q .append ("and (t.sender.test = false and t.receiver.test = false)");} query qry = entityManager.createQuery (q + "sequence by t.dateTransfered desc"); Qry.setParameter (" Qry.setParameter ("year", DateUtil.getYear (date)); if (Val.required (request.getParameter ("niv")) qry.setParameter ("niv", "Date", "Date", DateUtil.getRealMonth (date) Long.valueOf (request.getParameter ("niv")); if (Val.required (request.getParameter ("status")) qry.setParameter ("status", TransactionStatus.valueOf (request.getParameter ("status" ));; (Val.required (request.getParameter ("serviceType") qry.setParameter ("serviceType", TransactionServiceType.valueOf (request.getParameter ("serviceType")); if (Val.required (request.getParameter ("source" )) {Qry.setParameter ("source", TransactionSource.valueOf (request.getParameter ("source"))); If (Val.required (request.getParameter ("sourceMethod")) {qry.setParameter ("sourceMethod", request.getParameter ("sourceMethod")); }} Qry.setFirstResult (start) .setMaxResults (end); Try {return (list & lt; transaction & gt;) qry.getResultList (); } Hold (NoResultException E) {return tap; } Hold (exception e) {e.printStackTrace (); Return tap; }}  

t.sender.test creates a void Connect with the sender internally What you need here is a left join