定义实体视图view-entity时默认是使用的view-link关联时,等价于sql的inner join。那要如何才能实现left join呢?
访问路径http://ofbiz.apache.org/dtds/entitymodel.xsd查看xml关于view-link标签的定义
从上面可以看到有一个rel-optional属性,其默认值是false,表示inner join连接。
所以只要使用view-link标签时,把他的rel-optional属性设置为true,则表示left join连接。
inner join连接的例子:
<view-entity entity-name="LabProjectAndCourseAndTerm"
package-name="org.apache.ofbiz.booking.labproject"
never-cache="true"
title="LabProject And Course And Term View Entity">
<member-entity entity-alias="LP" entity-name="LabProject"/>
<member-entity entity-alias="CS" entity-name="Course"/>
<member-entity entity-alias="TM" entity-name="Term"/>
<alias entity-alias="LP" name="proId"/>
<alias entity-alias="LP" name="proName"/>
<alias entity-alias="LP" name="courseId" />
<alias entity-alias="LP" name="termName"/>
<alias entity-alias="CS" name="courseName"/>
<alias entity-alias="TM" name="beginTime"/>
<alias entity-alias="TM" name="endTime"/>
<alias entity-alias="TM" name="used"/>
<view-link entity-alias="LP" rel-entity-alias="CS" >
<key-map field-name="courseId"/>
</view-link>
<view-link entity-alias="LP" rel-entity-alias="TM" >
<key-map field-name="termName"/>
</view-link>
<relation type="one-nofk" rel-entity-name="Course" >
<key-map field-name="courseId"/>
</relation>
</view-entity>
left join 连接的例子:
<view-entity entity-name="LabProjectAndCourseAndTerm"
package-name="org.apache.ofbiz.booking.labproject"
never-cache="true"
title="LabProject And Course And Term View Entity">
<member-entity entity-alias="LP" entity-name="LabProject"/>
<member-entity entity-alias="CS" entity-name="Course"/>
<member-entity entity-alias="TM" entity-name="Term"/>
<alias entity-alias="LP" name="proId"/>
<alias entity-alias="LP" name="proName"/>
<alias entity-alias="LP" name="courseId" />
<alias entity-alias="LP" name="termName"/>
<alias entity-alias="CS" name="courseName"/>
<alias entity-alias="TM" name="beginTime"/>
<alias entity-alias="TM" name="endTime"/>
<alias entity-alias="TM" name="used"/>
<view-link entity-alias="LP" rel-entity-alias="CS" rel-optional="true" >
<key-map field-name="courseId"/>
</view-link>
<view-link entity-alias="LP" rel-entity-alias="TM"rel-optional="true" >
<key-map field-name="termName"/>
</view-link>
<relation type="one-nofk" rel-entity-name="Course" rel-optional="true">
<key-map field-name="courseId"/>
</relation>
</view-entity>