0

我的应用有联赛,每个联赛可以有任意数量的比赛。我使用 .hbm.xml 文件来建立联赛和比赛之间的关联。我已将其配置如下:

<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() 获取联赛列表时,不应该每个联赛都加载所有的比赛吗?

4

2 回答 2

2

添加级联=“全部”

<set name="competitions" table="leagueCompetitions" lazy="false" cascade="all">
<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"/>

于 2012-04-30T02:58:33.453 回答
1

原来我的 hbm.xml 配置无效。我在一张桌子上有一个多对多的配置,在关联的另一边有一个多对一的配置。结果只是一团糟。

于 2012-05-02T21:55:21.023 回答