From: | Chris Dole <chris(dot)dole(at)sas(dot)com> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | MyBatis Batch Update Leads to PSQLException "Too many update results were returned" |
Date: | 2018-02-27 21:19:21 |
Message-ID: | 1519766361988-0.post@n3.nabble.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
I have a fairly simple implementation of a batch update via the MyBatis
functionality.
Postgres version (via RDS on Amazon Web Services): 9.6.6
JDBC driver version: 9.4
The error manifests as follows:
DataIntegrityViolationException
Root cause: BatchUpdateException
getNextException: PSQLException - Too many update results were returned.
Has anyone else run into this? I have searched far and wide for an
explanation (including here) but have not found an answer yet.
I assume this error is coming up from the JDBC driver?
The curious thing is that the update seems to work (as in database
side-effects) but it still throws an exception afterward.
Here is a fragment of the MyBatis mapper XML file for the update. The
failure can happen for as few as two or three updates, and it can succeed
with hundreds.
<update id="update" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE public.vid_event_timing SET mark_delete = 1 WHERE
visitor_id=#{item.vid} AND timed_node_id=#{item.timedNodeId} AND
conditional_node_id= #{item.conditionalNodeId}
</foreach>
</update>
The MyBatis/Spring configuration includes this session factory bean, set to
ExecutorType.BATCH by default.
@Bean
public SqlSessionTemplate getSqlSessionTemplate()
{
SqlSessionFactory sessionFactory = null;
try
{
sessionFactory =
getMktPersistDesignSqlSessionFactoryBean().getObject();
sessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.BATCH);
}
catch (Exception e)
{
String message = PersistLogUtil.error(logger, "Failed to create
SqlSessionTemplate");
throw new RuntimeException(message, e);
}
SqlSessionTemplate template = new
SqlSessionTemplate(sessionFactory);
return template;
}
Thanks for any help.
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-jdbc-f2168246.html
From | Date | Subject | |
---|---|---|---|
Next Message | cathryn | 2018-03-01 04:48:17 | Errors encountered when running JDBC testcases from OptionalTestSuite against vPG10.2 |
Previous Message | Vladimir Sitnikov | 2018-02-21 18:25:37 | Re: JDBC driver returns different version strings on Ubuntu and CentOS |