私のアプリはリーグを持ち、各リーグはいくつでも競技を行うことができます。私は、.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>
私は基本的に私は競技をカウントするためにいくつかのコードを書き、それがあった
Query query = session.createQuery("from League");
return query.list();
に降りてくるのリーグのリストを取得するDAOメソッドを持っています
if (league.getCompetitions().size() > 0) { ... blahditty blah ... }
ただし、getCompetitions()は常に空のセットなので失敗しました。
質問:リーグのリストを取得するためにLeagueDAO.list()を使用すると、各リーグにすべての競技もロードされるべきではありませんか?
ありがとうございますが、Hibernateの動作に違いはありません。そして、「選択したもの」よりも[私が先に読んだ](https://community.jboss.org/wiki/AShortPrimerOnFetchingStrategies)がデフォルトです。 – Marvo
また、cacade = "all"を使わないで保存することができますが、 "オブジェクトが未保存の一時的なインスタンスを参照する - フラッシュする前に一時的なインスタンスを保存する"のような例外が発生するはずです。 – mprabhat
これは動作しません。 – Marvo