每当我们使用genericValue.getRelated()获取迷你语言,通过关系获取对象时,必须知道关系名称。那么关系名称在哪里定义的呢?
看下面例子:
<entity entity-name="StuBatch" package-name="org.apache.ofbiz.booking.stubatch" title="学生预约实验项目批次申请表">
<field name="stuId" type="id-ne"><description>primary sequenced ID</description></field>
<field name="batchId" type="id-ne"></field>
<field name="date" type="date-time"></field>
<field name="result" type="name"></field>
<field name="reason" type="long-varchar"></field>
<prim-key field="stuId"/>
<prim-key field="batchId"/>
<prim-key field="date"/>
<relation type="one" fk-name="FK_StuBatch_Student" rel-entity-name="Student">
<key-map field-name="stuId"/>
</relation>
<relation type="one" fk-name="FK_StuBatch_LabProjectBatch" rel-entity-name="LabProjectBatch">
<key-map field-name="batchId"/>
</relation>
</entity>
<relation type="one" fk-name="POST_ADDR_CGEO" title="Country" rel-entity-name="Geo">
<key-map field-name="countryGeoId" rel-field-name="geoId"/>
</relation>
<relation type="one" fk-name="POST_ADDR_SPGEO" title="StateProvince" rel-entity-name="Geo">
<key-map field-name="stateProvinceGeoId" rel-field-name="geoId"/>
</relation>
关系名称就是实体定义里面relation元素里的rel-entity-name属性值,如果元素里有title属性,则rel-entity-name属性值加上title属性前缀。
即上面例子中的4个关系名称分别是:
Student
LabProjectBatch
CountryGeo
StateProvinceGeo