MyBatis,集合的嵌套结果为空
MyBatis, nested results for collection is empty
我正在按照 MyBatis 网站中的示例创建一个具有嵌套集合的映射器,当我执行 select 操作时,我的对象 (Provider) 是 return 但里面的集合它 (ProviderParameter) 为空,当我转到数据库工具并应用相同的查询时,我得到了预期的结果(集合也是 return)。
这是我的映射器:
<resultMap id="Provider" type="xxx.Provider">
<result column="idProvider" property="idProvider"/>
<result column="providerType" property="providerType"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="licenceInformation" property="licenseInformation"/>
<collection property="parameters" ofType="xxx.ProviderParameter">
<result column="idProviderParameter" property="idProviderParameter"/>
<result column="name" property="name"/>
<result column="value" property="value"/>
</collection>
</resultMap>
和 select:
<select id="getProviderById" resultType="xxx.Provider">
select P.idProvider as idProvider
,P.providerType as providerType
,P.username as username
,P.password as password
,P.licenceInformation as licenceInformation
,PP.idProviderParameter as idProviderParameter
,PP.name as name
,PP.value as value
from [dbo].[msg_Provider] AS P
left outer join [dbo].[msg_ProviderParameter] AS PP on P.idProvider = PP.idProvider
where P.idProvider = #{idProvider}
</select>
我的问题是 select 我把 resultType 而不是 resultMap,
所以 select 应该是这样的:
<select id="getProviderById" resultMap="Provider">
select P.idProvider as idProvider
,P.providerType as providerType
,P.username as username
,P.password as password
,P.licenceInformation as licenceInformation
,PP.idProviderParameter as idProviderParameter
,PP.name as name
,PP.value as value
from [dbo].[msg_Provider] AS P
left outer join [dbo].[msg_ProviderParameter] AS PP on P.idProvider = PP.idProvider
where P.idProvider = #{idProvider}
</select>
我正在按照 MyBatis 网站中的示例创建一个具有嵌套集合的映射器,当我执行 select 操作时,我的对象 (Provider) 是 return 但里面的集合它 (ProviderParameter) 为空,当我转到数据库工具并应用相同的查询时,我得到了预期的结果(集合也是 return)。
这是我的映射器:
<resultMap id="Provider" type="xxx.Provider">
<result column="idProvider" property="idProvider"/>
<result column="providerType" property="providerType"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="licenceInformation" property="licenseInformation"/>
<collection property="parameters" ofType="xxx.ProviderParameter">
<result column="idProviderParameter" property="idProviderParameter"/>
<result column="name" property="name"/>
<result column="value" property="value"/>
</collection>
</resultMap>
和 select:
<select id="getProviderById" resultType="xxx.Provider">
select P.idProvider as idProvider
,P.providerType as providerType
,P.username as username
,P.password as password
,P.licenceInformation as licenceInformation
,PP.idProviderParameter as idProviderParameter
,PP.name as name
,PP.value as value
from [dbo].[msg_Provider] AS P
left outer join [dbo].[msg_ProviderParameter] AS PP on P.idProvider = PP.idProvider
where P.idProvider = #{idProvider}
</select>
我的问题是 select 我把 resultType 而不是 resultMap,
所以 select 应该是这样的:
<select id="getProviderById" resultMap="Provider">
select P.idProvider as idProvider
,P.providerType as providerType
,P.username as username
,P.password as password
,P.licenceInformation as licenceInformation
,PP.idProviderParameter as idProviderParameter
,PP.name as name
,PP.value as value
from [dbo].[msg_Provider] AS P
left outer join [dbo].[msg_ProviderParameter] AS PP on P.idProvider = PP.idProvider
where P.idProvider = #{idProvider}
</select>