所以我有一个非常复杂的 java 对象,我使用 MyBatis 映射到我的数据库。我希望能够同时检索整个对象,包括所有子、孙等,所以我为它制作了一个结果图。有点像
<resultMap id="BaseResultMap" type="Parent">
<id column="PARENT_PK" jdbcType="VARCHAR" property="pk" />
<association property="address" javaType="address">
<id column="address_PK" jdbcType="VARCHAR" property="pk" />
</association>
<collection property="Children" javaType="java.util.ArrayList" ofType="Child">
<id column="CHILD_PK" property="Pk" jdbcType="VARCHAR" />
<result column="SCHEMA.CHILDREN.DESCRIPTION" property="description" jdbcType="VARCHAR" />
<collection property="Children" javaType="java.util.ArrayList" ofType="Grandchildren">
<id column="Grand_child_pk" jdbcType="VARCHAR" property="pk" />
<result column="SCHEMA.GRAND_CHILDREN.DESCRIPTION" property="description" jdbcType="VARCHAR" />
<collection property="children" javaType="java.util.ArrayList" ofType="GreatGrandChildren">
<result column="NAME" property="name" jdbcType="VARCHAR"/>
</collection>
</collection>
</collection
我的 SQL 是这样的
选择 PARENT_PK、ADDRESS_PK、CHILD_PK、SCHEMA.CHILDREN.DESCRIPTION、GRAND_CHILD_PK、SCHEMA.GRAND_CHILDREN.DESCRIPTION、名称来自...
大多数字段都正确填充,并且我在每个级别都获得了正确数量的孩子。但是,两个描述字段都没有填充——我得到的是空值。其他一切正常。如果我使用 Mybatis 只检索孩子或孙子而不尝试加载关系,那么描述字段可以正常工作。只有当我试图一次得到所有东西时。
如果我手动运行查询,它检索描述列没有问题,所以我不认为这是我的 sql 代码的问题。
关于发生了什么的任何想法?