Использование MyBatis 3.2.7UseGeneratedKeys не работает для ParameterType = "Карта"
Сценарий 1:
POJO:
public class Project {
private Long id;
public Long getId() { ... }
public void setId(...) { ... }
}
DAO:
public void update(@Param("parentId") long parentId, @Param("project") Project project);
DAO. xml
<update id="updateProject" parameterType="map" useGeneratedKeys="true" keyProperty="project.id" keyColumn="project_id">
Учитывая эти классы/файлы, я полагаю, что если я называю update
-метод DAO с Project
, который не имеет идентификатора набор еще, что после того, как он был слит/вставить в базу данных, project.id
содержит генерируемый id, но, по-видимому, он все еще равен нулю.
Сценарий 2:
В том же DAO, у меня есть другая установка, которая работает прекрасно:
POJO:
public class Plan {
private Long id;
public Long getId() { ... }
public void setId(...) { ... }
}
DAO:
public void update(@Param("plan") Plan plan);
DAO .xml
<update id="updatePlan" parameterType="Plan" useGeneratedKeys="true" keyProperty="id" keyColumn="plan_id">
Вопрос
Благодаря тому, что в сценарии 2 она отлично работает и не работает в сценарии 1, я полагаю, что использование сгенерированных ключей не поддерживается при использовании карты в качестве parameterType
. Это правда?
http://mybatis-user.963551.n3.nabble.com/Problem-with-setting-a-key-on-an-Insert-on-method- w-multiple-params-td3513325.html Похоже, что это действительно не поддерживается, если используются несколько параметров. –