325.17. PostgreSQL 问题单
有特殊的数据库可能会导致 JdbcAggregationRepository
使用优化式锁定时出现问题。在数据完整性违反异常时,PostgreSQL 会将连接标记为无效(一个具有 SQLState 23505)。这使得连接在嵌套的事务中有效不可用。有关详细信息,请参阅 本文档。
org.apache.camel.aggregate.jdbc.PostgresAggregationRepository
扩展 JdbcAggregationRepository
,并使用特殊的 INSERT。ONCONFLICT .
用来提供优化锁定行为的声明。
此声明为 (具有默认聚合表定义):
INSERT INTO aggregation (id, exchange) values (?, ?) ON CONFLICT DO NOTHING
有关详细信息,请参阅 PostgreSQL 文档。
当使用此子句时,java.sql.PreparedStatement.executeUpdate ()
调用返回 0,
而不是通过 SQLState=23505 引发 SQLException。进一步处理与通用 JdbcAggregationRepository
完全相同,但不将 PostgreSQL 连接标记为无效。