没有列的 MyBatis 关联
MyBatis association without column
在映射器 A 中,我有一个 resultMap
,其中包含使用另一个映射器加载的关联(映射器 B)方法和映射器上的方法 B 没有参数。
关联在映射器中应该是什么样子 A?
我试过以下方法:
<association property="property" column=""
select="mapperB.findObjectWithNoArguments"
javaType="Object"/>
但这不起作用,加载的值为空(即使它实际存在并且应该加载)。
删除 column
属性会产生 解析映射器时出错 XML。原因:java.lang.IllegalStateException:映射缺少 属性 属性 错误的列属性。
事实证明,如果你真的想通过 XML 完成映射,唯一可能的方法是添加一个具有 truth-y 值的假列,例如一:
SELECT
1 AS column_to_force_association
FROM ...
然后在关联中使用这个伪造的列:
<association property="property" column="column_to_force_association"
select="mapperB.findObjectWithNoArguments"
javaType="Object"/>
但这看起来无处可寻,因此更好的方法可能是加载没有值的实体并使用 setter.
将其设置在服务中
在映射器 A 中,我有一个 resultMap
,其中包含使用另一个映射器加载的关联(映射器 B)方法和映射器上的方法 B 没有参数。
关联在映射器中应该是什么样子 A?
我试过以下方法:
<association property="property" column=""
select="mapperB.findObjectWithNoArguments"
javaType="Object"/>
但这不起作用,加载的值为空(即使它实际存在并且应该加载)。
删除 column
属性会产生 解析映射器时出错 XML。原因:java.lang.IllegalStateException:映射缺少 属性 属性 错误的列属性。
事实证明,如果你真的想通过 XML 完成映射,唯一可能的方法是添加一个具有 truth-y 值的假列,例如一:
SELECT
1 AS column_to_force_association
FROM ...
然后在关联中使用这个伪造的列:
<association property="property" column="column_to_force_association"
select="mapperB.findObjectWithNoArguments"
javaType="Object"/>
但这看起来无处可寻,因此更好的方法可能是加载没有值的实体并使用 setter.
将其设置在服务中