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 连接标记为无效。