Вариант использования здесь, чтобы найти ограниченный набор мальчиков, которые имеют
Воздушные змеи с длинами в определенном диапазоне, а затем при желании получить
все змеи в этом диапазоне, принадлежащие этим мальчикам.
Не думайте, что я много знаю о SQL или Hibernate.
Я хотел бы сформировать запрос Hibernate Criteria, в котором
коллекция была ограничена. Например, скажем, у меня есть класс Boy
с двунаправленной ассоциацией один-ко-многим в классе воздушных змеев.
Я хочу получить список мальчиков, чьи длины воздушных змеев находятся в диапазоне.
Я могу получить поля (но не для мальчиков), удовлетворяющие этой цели, с помощью HQL-запроса:
select Boy.name from Boy
inner join Kite on Boy.id=Kite.boyId
where length >= 1;
Однако эта попытка с критериями всегда возвращает list.size () с нулем
(даже при том, что у Boy Huck есть диапазон воздушных змеев длиной от 0,1 до 2,0):
Criteria crit = session.createCriteria(Boy.class);
crit.add(Restrictions.eq("name", "Huck"))
.createCriteria("kites")
.add(Restrictions.ge("length", new BigDecimal(1.0)));
List list = crit.list();
В идеале и дополнительно, для каждого мальчика в этом списке (при условии, что мой
код работал!) Я хотел бы, чтобы все Kites в boy.getKites ()
удовлетворить ограничение по длине. Эта вторая цель может быть желаемой
думаю.
Я думаю, проблема с моей попыткой Criteria заключается в том, что соединение
не правильно: я вижу ff., но не знаю, как это исправить.
Hibernate:
select
this_.id as id3_1_,
this_.name as name3_1_,
...
kites1_.id as id4_0_,
kites1_.boyId as boyid2_4_0_,
kites1_.length as length3_4_0_,
...
from
Boy this_
inner join
Kite kites1_
on this_.id=kites1_.id <--- Should be =boyid?
where
this_.name=?
and kites1_.length>=?