Modo de empleo variable de vinculación dentro literal recogida de Cassandra - InvalidQueryException

ido:

Estoy preparando una consulta Cassandra en Java utilizando com.datastax.driver.core.PreparedStatement

Mi esquema es muy simple - una keyque es del tipo texty valuedel tipo set<text>. Estoy preparando la declaración de este modo:

mySession.prepare("UPDATE a.table USING TTL :ttl SET value = value + {:value} WHERE key = :key ");

[Esto se hace con el fin de añadir un valor al conjunto y tienen por separado ttlpara cada valor]

Tengo este error en la evaluación de la declaración anterior:

com.datastax.driver.core.exceptions.InvalidQueryException: Invalid set literal for value: bind variables are not supported inside collection literals
at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:49)
at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:35)
at com.datastax.driver.core.AbstractSession.prepare(AbstractSession.java:86)

¿Cómo puedo superar esta excepción y se me trabó la variable a una colección de tipo set<text>. Por otra parte, hay algunos mejores / modo preferido de lograr mi meta de forma dinámica (con diferentes TTL) añadir elementos a una setde Cassandra de java?

la compensación:

Usted puede hacer de la siguiente manera:

PreparedStatement st = session.prepare("UPDATE test2 USING TTL :ttl SET value = value + :value WHERE name = :name ");
session.execute(st.bind()
                .setInt("ttl",1)
                .setSet("value", ImmutableSet.of("add this value"))
                .setString("name","key1"));

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=318851&siteId=1
Recomendado
Clasificación