Ссылочные свойства объекта с нулевой ссылкой в HQL
Здесь у меня есть два Entity
учебный класс.
@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;
}
А также
@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;
}
Есть 10 строк в AC_VOUCHER_MASTER
стол, где 4 drAc
данные null
в AC_VOUCHER_MASTER
Таблица.
session.createQuery("select v.id, v.amount, v.drAc.id, v.crAc.id from Voucher v").list();
Приведенный выше запрос возвращает мне 10 результатов (хотя 4 drAc
являются null
). Но когда я ставлю имя ссылки (v.drAc.name
), он возвращает только те строки (6 строк), которые drAc
не является null
,
"select v.id, v.amount, v.drAc.id, v.drAc.name, v.crAc.id , v.crAc.name from Voucher v"
Что мне теперь делать? Есть ли использовать coalesce()
или что-то другое?
1 ответ
Решение
Используйте левое соединение:
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