2015-07-04 2 views
3

У меня возникли проблемы при возврате списка объектов внутри другого объекта при использовании 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 пытается выбрать такие строки, как TYPEPERMISSIONS, ID, SYMBOL

Я искал через Интернет, но не нашел ничего полезного. Не могли бы вы помочь мне и указать, что я делаю неправильно?

ответ

6

Пожалуйста, ваши выберите фрагмент кода, я думаю, что это будет нормально:

<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> 

И я думаю, что вы получите это actully что-то вроде этого:

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

И больше об этом вы можете прочитать этот пример Nested_Results_for_Collection

+0

Я дам ему попробовать в одно мгновение –

+0

Я думаю, мне нужно практиковать SQL больше ... спасибо за ответ –

Смежные вопросы