Return Object inside Object with MyBatis 列表

Return list of Object inside Object with MyBatis

我在使用 MyBatis 时返回另一个对象中的对象列表时遇到问题。我的主要对象如下所示:

private Long id;

private String symbol;

private List<TypePermission> typePermissions;

我的映射器看起来像这样

<resultMap type="CalendarType" id="calendarTypeMap">
    <result column="id" property="id"/>
    <result column="symbol" property="symbol"/>
    <collection property="TypePermissions" resultMap="TypePermissions"/>
</resultMap>

<resultMap id="TypePermissions" type="TypePermission">
    <result property="roleId" column="roleId"/>
    <result property="permissionSymbol" column="permissionSymbol"/>
</resultMap>

我的目标是得到这样的对象:

content:[
    "id":id,
    "symbol":symbol,
    "TypePermissions":{
        "roleId":roleId,
        "permissionSymbol":permissionSymbol
    }
]

当我执行 sql 查询时,出现以下错误 cannot find symbol TypePermissions,因为主 SELECT 尝试 select 行,例如 TYPEPERMISSIONS、ID、SYMBOL

我在网上搜索过,但没有找到任何有用的东西。你能帮我指出我做错了什么吗?

请 post 你的 select 代码段,我认为这样可以:

<select id="selectCalendarType" parameterType="int" resultMap="calendarTypeMap">
    SELECT c.id,
    c.symbol
    t.roleId,
    t.permissionSymbol
    FROM CalendarType c
    LEFT JOIN TypePermission t ON c.id = t.c_id
    WHERE c.id = #{id}
</select>

我想你会得到的实际上是这样的:

content:{
  "id":id,
  "symbol":symbol,
  "TypePermissions":[{
    "roleId":roleId,
    "permissionSymbol":permissionSymbol
  }]
}

有关此的更多信息,您可以阅读此示例 Nested_Results_for_Collection