我想重寫我們的服務以使用mybatis映射和連接來讓我們的實體在數據庫/ mybatis層完成並完成。Mybatis一對多集合映射總是有一個默認實體
<resultMap id="ParentMap" type="org.example.mybatis.Parent">
<id column="id" jdbcType="VARCHAR" property="id" />
<id column="Name" jdbcType="VARCHAR" property="name" />
<id column="SurName" jdbcType="VARCHAR" property="surName" />
<collection property="childs" column="ChildId"
javaType="ArrayList" ofType="org.example.mybatis.Child"
resultMap="org.example.ChildMap" />
</resultMap>
<resultMap id="ChildMap" type="org.example.mybatis.Parent">
<id column="id" jdbcType="VARCHAR" property="id" />
<id column="Name" jdbcType="VARCHAR" property="name" />
<id column="SurName" jdbcType="VARCHAR" property="surName" />
<id column="Age" jdbcType="INTEGER" property="age" />
</resultMap>
<sql id="Parent_Column_List">
p.Id, p.Name, p.SurName,
</sql>
<sql id="Child_Column_List">
c.Id, c.ParentId c.Name, c.SurName, c.Age
</sql>
<select id="getParent" parameterType="java.lang.String" resultMap="ParentMap" >
select
<include refid="Parent_Column_List"/>
<include refid="Child_Column_List" />
from Parent p
left outer join Child c on p.Id = c.ParentId
where p.id = #{id,jdbcType=VARCHAR}
問題是下一:如果家長不有孩子的,與空或默認字段一些默認的實體將被添加到列表中。 我明白這是外連接的本質,但是mybatis不是很聰明,要明白這是假的?
有沒有一些解決方法呢?由於父實體需要處於結果中,因此我無法使用內連接。
非常感謝。此屬性未在用戶指南中記錄 –
您的「問題」在去年被報告爲bug。如果您好奇,我會讓您聯繫。 http://goo.gl/TXfr2 – jddsantaella