У меня есть следующий файл hbm.xml
<hibernate-mapping>
<class catalog="test_user" name="test.user" table="user">
<id name="id" type="java.lang.Long">
<column name="id"/>
<generator class="identity"/>
</id>
<property name="name" type="string">
<column length="200" name="name" unique="true"/>
</property>
<set fetch="join" inverse="true" lazy="true" name="education" table="user_education">
<key>
<column name="aid"/>
</key>
<one-to-many class="test.UserEducation"/>
</set>
<set fetch="join" inverse="true" lazy="true" name="employment" table="user_employment">
<key>
<column name="aid"/>
</key>
<one-to-many class="test.UserEmployment"/>
</set>
<set fetch="join" inverse="true" lazy="false" name="otherProfiles" table="user_other_profile">
<key>
<column name="aid"/>
</key>
<one-to-many class="test.OtherProfile"/>
</set>
<set fetch="join" inverse="true" lazy="false" name="settings" table="user_setting">
<key>
<column name="aid"/>
</key>
<one-to-many class="test.Setting"/>
</set>
<set fetch="join" inverse="true" lazy="false" name="images" table="user_images">
<key>
<column name="aid"/>
</key>
<one-to-many class="test.Images"/>
</set>
..
..
...
и многие таблицы связаны с пользователем, здесь я использую fetch="join"
для максимальных таблиц. В других запросах мне нужно получить данные из нескольких других связанных таблиц, поэтому я сделал fetch="join"
.
хочу выполнить квест
from user as u
left join fetch u.settings
where u.id=25
Моя проблема в том, что когда я хочу получить данные от пользователя, он всегда извлекает данные из всех связанных таблиц, где fetch="join"
. Я хочу знать, как получить только связанные данные соединения. Для приведенного выше запроса следует извлекать данные только из данных пользователя и настроек, а не из других таблиц, когда мы указали fetch="join"
для нескольких таблиц.
fetch
следует удалить, если вы об этом спрашиваете. Таким образом, по умолчанию будет использоваться значениеfetch="select"
, которое вы затем переопределяете с помощью директив выборки во время запроса. 22.06.2015