Search code examples
javahibernatehqlcriteriaquery

Reference properties of null referenced object in HQL


Here I have two Entity class.

@Table(name = "AC_ACCOUNT_MASTER")
public abstract class Account implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "a_name")
    private String name;
}

And

@Table(name = "AC_VOUCHER_MASTER")
public class Voucher implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private Double amt;

    @ManyToOne
    private Account drAc;

    @ManyToOne
    private Account crAc;

}

There are 10 rows in AC_VOUCHER_MASTER table, where 4 drAc data are null in AC_VOUCHER_MASTER table.

session.createQuery("select v.id, v.amount, v.drAc.id,  v.crAc.id  from Voucher v").list();

The above query returns me 10 result (although 4 drAc are null). But when I put name refernce (v.drAc.name), it returns only those rows (6 rows) that drAc is not null.

"select v.id, v.amount, v.drAc.id, v.drAc.name, v.crAc.id , v.crAc.name  from Voucher v"

What Should I do now ? Is there to use coalesce() or something else ?


Solution

  • Use a left join:

    select v.id, v.amount, drAc.id, drAc.name, crAc.id , crAc.name 
    from Voucher v
    left join v.drAc drAc
    left join v.crAc crAc