2014-12-15 2 views
1

Я пытаюсь обновить список записей, но я получил следующую ошибку в mybatis.MyBatis foreach с пружиной не работает

org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'list' in 'class com.model.DataParameters' 

и мой mybatis XML запрос, как следовать

<update id="deleteAssociatedEntityForParentEntity" parameterType="com.model.DataParameters"> 
    update dataTable set deleted = #{deleted}, syncTS = #{syncTS} where 
    data_id in 
    <foreach item="dataIds" index="index" collection="list" 
     open="(" separator="," close=")"> 
     #{dataIds} 
    </foreach> 
    and aData_type = #{dataType}; 

</update> 

класс DataParameter геттер сеттер был объявлен в этом классе. dataIds - мой список.

, пожалуйста, дайте мне знать, если это не так в моем запросе. почему список не принимает? Любой другой Ребята?

ответ

0

Поместите список свое имя класса в атрибуте коллекции и opcional имя в пункте атрибута использовать ниже

вы попробуете это код:

<update id="deleteAssociatedEntityForParentEntity" parameterType="com.model.DataParameters"> 
    update dataTable set deleted = #{deleted}, syncTS = #{syncTS} where 
    data_id in 
    <foreach item="id" index="index" collection="dataIds" 
     open="(" separator="," close=")"> 
     #{id} 
    </foreach> 
    and aData_type = #{dataType}; 

</update> 
1

Я предлагаю вам дополнительную проверку перед foreach .. dataIds должен быть List.

<update id="deleteAssociatedEntityForParentEntity" parameterType="com.model.DataParameters"> 
    update dataTable set deleted = #{deleted}, syncTS = #{syncTS} where 1=1 
    <if test="dataIds!= null"> 
     and data_id in 
     <foreach item="item" index="index" collection="dataIds" 
     open="(" separator="," close=")"> 
     #{item} 
     </foreach> 
    </if> 
    and aData_type = #{dataType}; 
</update> 

Это лишь фрагмент кода

SqlSession session = sessionFactory.openSession(); 

Map<String, Object> mapParameter = new HashMap<String, Object>(); 
List<Integer> listDataIds = .... 

mapParameter.put("dataIds",listDataIds); 

session.update("deleteAssociatedEntityForParentEntity",mapParameter); 
+0

Но чувак я отправив список (dataIds) с параметром типа (com.model.DataParameters), который, как мне кажется, не нужно добавлять null check, я проверяю null перед добавлением в объект (com.model.DataParameters). – addy

+0

Это всего лишь предложение, я думаю, что для того, чтобы запросить многоразовый запрос, вы должны добавить эту проверку. В любом случае, список должен быть списком . – Xstian

+0

Все еще получаются null dataIds см. Параметры: 1 (целое число), 1418640335416 (Long), null, Student (String) – addy

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