首页 > 解决方案 > Springboot Cassandra - com.datastax.oss.driver.api.core.servererrors.SyntaxError:绑定变量不能用于键空间名称

问题描述

关于如何在 SpringBoot @Repository 中拥有键空间名称变量的快速问题。

我目前有一个数据库,它在两个不同的键空间中有两个不同的表。但是具有完全相同的数据结构。

有时,我需要从第一个键区检索,有时是第二个键区。因此,我写了以下内容:

@Repository
public interface MyRepository extends ReactiveCassandraRepository<Data, String> {
    
    @Query("select * from ?0.?1 where key = ?2")
    Mono<Data> findByIdCustom(String keyspace, String table, String key);

}

然而,这会产生

org.springframework.data.cassandra.CassandraQuerySyntaxException: Query; CQL [com.datastax.oss.driver.internal.core.cql.DefaultSimpleStatement@eeba944d]; Bind variables cannot be used for keyspace names; nested exception is com.datastax.oss.driver.api.core.servererrors.SyntaxError: Bind variables cannot be used for keyspace names
    at org.springframework.data.cassandra.core.cql.CassandraExceptionTranslator.translate(CassandraExceptionTranslator.java:129) ~[spring-data-cassandra-3.1.1.jar!/:3.1.1]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:

Caused by: com.datastax.oss.driver.api.core.servererrors.SyntaxError: Bind variables cannot be used for keyspace names

有没有办法解决这个问题,而不必在查询中对键空间进行硬编码?

谢谢

标签: javaspring-bootcassandra

解决方案


推荐阅读