diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java index 1a36b3728..30740a0b3 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java @@ -982,6 +982,9 @@ public class CassandraTemplate implements CassandraOperations, ApplicationEventP @Override public PreparedStatement createPreparedStatement(CqlSession session) throws DriverException { + + // Note that prepared statement settings like the keyspace are gone because using the prepare method with a + // statement object causes cache pollution return session.prepare(statement.getQuery()); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java index 77045df02..c456b4404 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java @@ -966,6 +966,9 @@ public class ReactiveCassandraTemplate @Override public Mono createPreparedStatement(ReactiveSession session) throws DriverException { + + // Note that prepared statement settings like the keyspace are gone because using the prepare method with a + // statement object causes cache pollution return session.prepare(statement.getQuery()); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraTemplateIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraTemplateIntegrationTests.java index c602a060d..351437895 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraTemplateIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraTemplateIntegrationTests.java @@ -492,11 +492,14 @@ class CassandraTemplateIntegrationTests extends AbstractKeyspaceCreatingIntegrat User user = new User("heisenberg", "Walter", "White"); template.insert(user); + template.setUsePreparedStatements(false); Query query = Query.query(where("id").is("heisenberg")).queryOptions(queryOptions); assertThatThrownBy(() -> assertThat(template.select(query, User.class)).isEmpty()) .isInstanceOf(CassandraInvalidQueryException.class) .hasMessageContaining("Keyspace 'non_existing' does not exist"); + + template.setUsePreparedStatements(true); } @Test // DATACASS-182