У меня есть лиги, и каждая лига может иметь любое количество соревнований. Я использую файлы .hbm.xml, чтобы установить связь между лигами и соревнованиями. Я настроил его следующим образом:Конфигурация Hibernate: многие-ко-многим ассоциации
<set name="competitions" table="leagueCompetitions" lazy="false">
<meta attribute="property-type"><![CDATA[Set<Competition>]]></meta>
<meta attribute="default-value"><![CDATA[new HashSet<Competition>()]]></meta>
<key column="leagueId"/>
<many-to-many column="competitionId"
unique="true"
lazy="false"
class="com.example.model.Competition"/>
</set>
У меня есть метод DAO, который извлекает список лиг, которые по существу сводятся к
Query query = session.createQuery("from League");
return query.list();
Я написал код для подсчета соревнований, и это было так же как
if (league.getCompetitions().size() > 0) { ... blahditty blah ... }
Но это не получилось, потому что getCompetitions() всегда является пустым набором.
Вопрос: Когда я использую LeagueDAO.list(), чтобы получить список лиг, не должна ли каждая лига загружать все свои соревнования?
Спасибо, но, похоже, не имеет никакого отношения к поведению гиберната. И [я читал ранее] (https://community.jboss.org/wiki/AShortPrimerOnFetchingStrategies), чем «select» является значением по умолчанию. – Marvo
Также вы можете сохранить его без cacade = «all», я думаю, вы должны получать исключение, например, «ссылки на объекты несохраненного экземпляра переходного процесса» - сохранить временный экземпляр перед промывкой » – mprabhat
Это тоже не работает. – Marvo