Каков правильный синтаксис для запроса ejbql, который пересекает четыре уровня отношения многие к одному - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть простая модель данных в JPA (hibernate), состоящая из многих отношений один к одному и один к одному, подобных этой:

город -> штат -> губернатор -> нация -> континент

где город много в одном штате, штат один в один для губернатора, губернатор много в один для нации и нация много в один для континента.

Я хотел бы получить экземпляр одного города по его уникальному идентификатору, а также с нетерпением получить информацию о соответствующем штате, губернаторе, нации и континенте с помощью ejbql. Я считаю, что правильный ejbql:

select t from town t
join fetch t.state s
join fetch s.governor g
join fetch g.nation n
join fetch n.continent c
where t.id=?id

Hiberante генерирует правильный sql из этого ejbql, но когда я делаю myTown.getState (). GetGovernor (). Я возвращаю нулевой объект моему губернатору. Почему спящий не заселяет губернатора? Кажется, что он не хочет заполнять объекты более чем на один уровень вверх по дереву. Кто-нибудь видит, что я делаю не так?

1 Ответ

0 голосов
/ 01 декабря 2009

Nevermind. Мой синтаксис выше действительно работает. Моя проблема не состояла в том, чтобы очистить сеанс гибернации от какого-либо предыдущего действия и получить кешированную версию объекта, которая не была правильно заполнена. После исправления этой проблемы все в порядке.

...