使用Spring存储库和ArcadeDB作为持久性,一个简单的"count()“运行在一个错误上。
2022-07-10 12:54:33.755 DEBUG 14320 --- [ main] o.s.jdbc.support.JdbcTransactionManager : Creating new transaction with name [org.springframework.data.jdbc.repository.support.SimpleJdbcRepository.count]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly
2022-07-10 12:54:33.760 DEBUG 14320 --- [ main] o.s.jdbc.support.JdbcTransactionManager : Acquired Connection [org.postgresql.jdbc.PgConnection@9263c54] for JDBC transaction
2022-07-10 12:54:33.797 DEBUG 14320 --- [ main] o.s.jdbc.datasource.DataSourceUtils : Setting JDBC Connection [org.postgresql.jdbc.PgConnection@9263c54] read-only
2022-07-10 12:54:33.802 DEBUG 14320 --- [ main] o.s.jdbc.support.JdbcTransactionManager : Switching JDBC Connection [org.postgresql.jdbc.PgConnection@9263c54] to manual commit
2022-07-10 12:54:34.802 DEBUG 14320 --- [ main] o.s.jdbc.core.JdbcTemplate : Executing SQL query [SELECT COUNT(*) FROM `Team`]
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [SELECT COUNT(*) FROM `Team`]; nested exception is org.postgresql.util.PSQLException: ERROR: Syntax error on parsing query: Encountered " <READ> "READ "" at line 1, column 7. Was expecting one of:
<EOF>
<ISOLATION> ...
";" ...
<ISOLATION> ..
但是,在普通JdbcTemplate中执行的相同的sql-查询成功地运行:
jdbcTemplate.execute("select count(*) from `Team`")
我怀疑发生此错误是因为存储库调用在事务中运行sql-语句,而普通的JdbcTemplate调用是在没有事务的情况下调用的。
我的问题是:我能让ArcadeDB与Spring事务管理器一起工作吗?如果不是,我是否可以在没有事务的情况下使用Spring数据存储库?
发布于 2022-10-21 00:45:45
您的问题可能是由您正在使用的发行版引起的。
最近的版本修复了Postgres驱动程序中一个恼人的bug。
从错误来看,它看起来像是使用了"READ“关键字。它可能是Spring数据层添加的。
https://stackoverflow.com/questions/72928114
复制相似问题