spring数据cassandra自定义插入查询在字符串中的“.”处失败

1bqhqjot  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(327)

我已经编写了一个自定义保存查询,以便可以在每个项上添加一个可配置的ttl。这是我的回购协议:

@Repository
public interface MyCassandraRepository extends
                                         TypedIdCassandraRepository<MyCassandraItem, UUID> {

    @Query("insert into " + TABLE_NAME + " (" + CQL_UUID + ", " + CQL_PLAN + ") values (?0, ?1) using ttl ?2")
    MyCassandraItem customSaveWithTtl(UUID uuid, String plan, Integer ttl);
}

这是我的table:

CREATE TABLE IF NOT EXISTS my_users.plans (
   user_id uuid,
   plan text,
   PRIMARY KEY (user_id)
) ;

但是,当我尝试添加一个计划字符串包含句号/句点的条目时(例如。 eyJhbGciOiJIUzUxMiJ9.hsdyu7832uwhjjdsjkdsew2389dhj ),我得到以下错误: org.springframework.cassandra.support.exception.CassandraQuerySyntaxException: line 1:110 mismatched input 'eyJhbGciOiJIUzUxMiJ9' expecting ')' (...plan) values ('c7a8fd65-8ef5-420e-b02e-898fe248bbf3', ''[eyJhbGciOiJIUzUxMiJ9]....); nested exception is com.datastax.driver.core.exceptions.SyntaxError: line 1:110 mismatched input 'eyJhbGciOiJIUzUxMiJ9' expecting ')' (...plan) values ('c7a8fd65-8ef5-420e-b02e-898fe248bbf3', ''[eyJhbGciOiJIUzUxMiJ9]....) 尝试使用cqlsh手动添加它时,我还得到了一个“.”错误: SyntaxException: line 1:826 no viable alternative at input '.' (... "plan") VALUES (c7a8fd65-8ef5-420e-b02e-898fe248bbf3, [eyJhbGciOiJIUzUxMiJ9].hsdyu7832uwhjjdsjkdse...) 有人知道我怎样才能让它加上整个字符串,而不是仅仅停留在“.”处吗?

vsikbqxv

vsikbqxv1#

您可以尝试使用preparedstatement

String originalPlan = "eyJhbGciOiJIUzUxMiJ9.hsdyu7832uwhjjdsjkdsew2389dhj";
PreparedStatement preparedStatement = cqlTemplate.getSession().prepare("insert into plans (user_id, plan) values (?, ? )");
Statement insertStatement = preparedStatement.bind(UUIDs.timeBased(), originalPlan );
cqlTemplate.execute(insertStatement);

相关问题