MyBatis:从插入的对象数组中获取id返回错误

时间:2015-02-11 11:41:20

标签: java mybatis

我使用mybatis 3.3.0-SNAPSHOT。我想插入对象列表,并获取每个对象的id。在界面中我有:

public void createCore(@Param("cores")List<Object> cores);  

在xml mapper中我有:

<insert id="createCore" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
  INSERT INTO mytable (raz,dva,tri )
  VALUES
    <foreach collection="cores" item="core" separator=",">
     (#{core.raz}, #{core.dva}, #{core.tri})
    </foreach>
</insert>

我得到了:

  

更新数据库时出错。原因:org.apache.ibatis.executor.ExecutorException:生成错误

     

键或将结果设置为参数对象。原因:   org.apache.ibatis.binding.BindingException:参数&#39; id&#39;未找到。   可用参数是[cores,param1]

我试过了keyProperty =&#34; core.id&#34;但得到同样的错误。

如何解决?

2 个答案:

答案 0 :(得分:2)

此问题已在版本3.3.1中修复

答案 1 :(得分:0)

在尝试使用usegenickeys插入多行时也得到了该错误。

在这里提到了我找到的解决方法:http://mybatis-user.963551.n3.nabble.com/MyBatys-Batch-Insert-doubt-error-retrieving-generated-id-binding-to-POJO-td4029977.html

您需要做的就是将参数重命名为“ list”。因此,在上面的示例中,“核心”->“列表”和自动生成的ID均有效。