有两个实体。
位置与路线表有一对多的关系。
我想设置。
Route.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>
Location.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>
即使我在路线中设置了departureID,我也会收到错误,因为departureID为空。
如何纠正这些映射以便工作
答案 0 :(得分:-1)
我认为您在抓取时遇到问题:
Lazy="true|false"
控制是否急切地或按需加载关联。
fetch="select|subselect|join|batch"
控制在需要加载时如何加载该实体或集合。
使用lazy="true"
和fetch="select"
Hibernate会延迟加载集合并使用select加载它。如果设置lazy="false"
,则会执行相同的选择,不同之处在于它会被急切执行。希望这是有道理的。
尝试设置lazy="false"
,然后查看您的departureID
是否仍为null
。