У меня была похожая проблема.У меня был SiebelUser DAO.Каждый SiebelUser связан с командой со многими отношениями.Некоторые SiebelUser имели userid = 0 в качестве внешнего ключа, для которого первичный ключ не присутствовал в таблице Users.Поэтому, естественно, выборка из таблицы SeibelUsers игнорировала пользователей с идентификатором пользователя = 0.Это была более ранняя конфигурация
<many-to-one name="teamid" class="com.hewitt.wlm.pojo.Tblteams">
<column name="TEAMID" length="4" not-null="true" />
</many-to-one>
Итак, чтобы решить мою проблему, я изменил конфигурацию на.Но у меня это не сработало.
<many-to-one name="teamid" class="com.hewitt.wlm.pojo.Tblteams" **fetch="join" not-null="false" lazy="proxy" not-found="ignore"**>
<column name="TEAMID" length="4" not-null="**false**" />
</many-to-one>
Наконец, я изменил свой запрос, чтобы явно сделать левое внешнее соединение, подобное этому, давая заданный путь от SiebelUsers к таблице Users.*
select property1, property2, ...
from from **SiebelUser s left outer join s.team t**
where property1='x'
Это сработало для меня.
Обратите внимание, что мой класс SiebelUser имел объект Team в качестве своего свойства (как определено в пути выше).Надеюсь, это кому-нибудь поможет.