2014-09-09 3 views
0

J'essaie d'insérer une liste d'enregistrements à une table Oracle 11g. J'ai essayé la syntaxe de MyBatis avec foreach mais elle échoue avec ORA-00933: La commande SQL n'est pas correctement terminée l'exception quand la liste a plus d'un enregistrement.mise à jour par lots oracle mybatis en utilisant foreach

The generated sql in this case looks like: 

MISE À JOUR CUSTOMER_T SET app_name =?, Start_date =?, Date_fin =? OERE customer_id =? MISE À JOUR CUSTOMER_T SET app_name =?, Start_date =?, End_date =? OERE customer_id =?

Below is my the query in the mapper: 

<update id="updateApplication" parameterType="com.test.mybatis.Application"> 

     <foreach item="ca" collection="customer.applications.applcation" 
      open="" close="" separator=""> 
     UPDATE CUSTOMER_T 
     SET app_name = #{ca.appName,jdbcType=VARCHAR},  
     start_date = #{ca.startDate,jdbcType=DATE,javaType=javax.xml.datatype.XMLGregorianCalendar}, 
     end_date = #{ca.endDate,jdbcType=DATE,javaType=javax.xml.datatype.XMLGregorianCalendar} 
     WHERE 
     customer_id=#{customer.info.customerid} 
     </foreach>  
    </update>  

J'apprécie si quelqu'un pourrait identifier le problème ici.

+0

Dans l'attribut 'separator', essayez de mettre'; 'et de voir si cela fonctionne. – kevin628

+0

Déjà essayé ça .. ça ne marche pas. – Sandp

+0

Est-ce que 'customer.applications.application' est la collection? Ou est-ce que 'customer.applications' est la collection actuelle? – kevin628

Répondre

-1

Il y a une meilleure façon de mise à jour batch/insérer comme décrit dans ma réponse here (dans laquelle je me réfère en fait en fait une réponse au message de l'OP dans un autre groupe) .

Questions connexes