没有列的 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.

将其设置在服务中