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.
Dans l'attribut 'separator', essayez de mettre'; 'et de voir si cela fonctionne. – kevin628
Déjà essayé ça .. ça ne marche pas. – Sandp
Est-ce que 'customer.applications.application' est la collection? Ou est-ce que 'customer.applications' est la collection actuelle? – kevin628