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 ?
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