У меня есть следующие таблицы:
SN, D и C со следующими ссылками:
SN содержит FK к D (d_id) (ManyToOne), SN содержит FK к C(c_id) (OneToOne), C имеет FK-D (d_id, OneToOne).D также содержит (среди других столбцов String number
и String name
).
Теперь у меня есть HQL-запрос, подобный следующему: "from SN sn where (sn.d is not null or sn.c.d is not null)"
(Итак, если sn.d равен нулю,d от sn.cd).Этот набор, однако, должен сортироваться по d.number или d.name.Поскольку во время создания запроса мы не знаем, по какой из «d» отсортировать, я пробовал так: "from SN sn where (sn.d is not null or sn.c.d is not null) order by coalesce (sn.d.name, sn.c.d.name)"
, но это не работает, я получаю меньше результатов, чем при обычном выборе;Я также пробовал с "order by case when sn.d is not null then sn.d.name else sn.c.d.name"
, но с тем же результатом.
Как я могу заказать по другому столбцу, если первый в HQL нулевой?
Спасибо