【问题标题】:how to set Multiple one to many relation with same column hibernate如何使用同一列休眠设置多个一对多关系
【发布时间】:2015-12-22 17:01:00
【问题描述】:

有两个实体。

  1. Route(Arrival、ArrivalID 和 Departure、DepartureID)作为位置
  2. 位置(到达、出发)作为路线

位置与路由表是一对多的关系。

我正在尝试设置。

路由.xml

 <many-to-one name="departure" class="com.nakisa.agency.Location" fetch="select" insert="false" update="false">
        <column name="locationID" not-null="true" />
    </many-to-one>

     <many-to-one name="arrival" class="com.nakisa.agency.Location" fetch="select" insert="false" update="false">
        <column name="locationID" not-null="true" />
    </many-to-one>

位置.xml

<set name="arrivals" table="Routes" inverse="true" lazy="true" fetch="select">
            <key>
                <column name="arrivalID" not-null="true" />
            </key>
            <one-to-many class="com.nakisa.agency.Route" />
        </set>


        <set name="departures" table="Routes" inverse="true" lazy="true" fetch="select">
            <key>
                <column name="departureID" not-null="true" />
            </key>
            <one-to-many class="com.nakisa.agency.Route" />
        </set>

即使我在路线中设置了departmentID,但由于departmentID 为null,我收到错误消息。

如何更正这些映射才能正常工作

【问题讨论】:

    标签: java xml hibernate one-to-many hibernate-onetomany


    【解决方案1】:

    我认为您在获取时遇到了问题:

    Lazy="true|false" 控制关联是立即加载还是按需加载。 fetch="select|subselect|join|batch" 控制实体或集合在需要加载时如何加载。

    使用lazy="true"fetch="select",Hibernate 将延迟加载集合并使用选择加载它。如果你设置lazy="false",同样的选择会被执行,不同的是它会被急切地执行。希望这是有道理的。

    尝试设置lazy="false",然后看看你的departureID是不是还是null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多