В то время как пакетная вставка и получение сгенерированного ключа, получение ошибки. Пакетная вставка работает нормально.MyBatis useGeneratedKeys для вложенного объекта в пакетной вставке
Структура объекта:
Объект 1:
Long id, String name, Obj2 obj
Объект 2: (obj2)
Long id, String value
Оба эти объекты хранятся в различных таблицах.
Таблица object1
id | name | object2_id (Foreign Key)
Таблица object2
id | value
Теперь у меня есть список объекта 1 для вставки.
Этот процесс будет вставка объекта 2 получить идентификатор и вставьте объекта 1 с "ID" из Объект2 (как внешний ключ).
При вставке Объект2, блок вставки в Mapper.xml
Случай 1:
<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="obj1s.obj2.id">
<!-- obj1s is name of the list -->
insert into object2 (value) values
<foreach collection="obj1s" item="obj1" separator=",">
(#{obj1.obj2.id})
</foreach>
</insert>
ERROR: Error getting generated key or setting result to parameter object.
Случай 2:
<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="obj1.obj2.id">
<!-- obj1 so as to access the object of foreach loop -->
insert into object2 (value) values
<foreach collection="obj1s" item="obj1" separator=",">
(#{obj1.obj2.id})
</foreach>
</insert>
ERROR: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'obj1' not found. Available parameters are [obj1s, param1]
Случай 3:
<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="obj2.id">
<!-- obj2 is the object with variable id to store generated key -->
insert into object2 (value) values
<foreach collection="obj1s" item="obj1" separator=",">
(#{obj1.obj2.id})
</foreach>
</insert>
ERROR: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'obj2' not found. Available parameters are [obj1s, param1]
Есть в любом случае для достижения этой цели? Возможно, используя selectKey, но selectkey используется для DB, не поддерживающих Autogenerated key.
Использование MyBatis 3.3.1 и Mysql.
уточните класс/свойства отображения <=> таблица/столбцы – blackwizard
@blackwizard Отображение может быть определено столбцами и именами свойств. – Shuddh