Ссылочные свойства объекта с нулевой ссылкой в ​​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
Другие вопросы по тегам