【发布时间】:2018-06-17 12:37:22
【问题描述】:
我们有一个表,其中两列是:
user_assignments frozen<list<shift_user_assignment>>,
user_offers frozen<list<shift_user_assignment>>,
而shift_user_assignment 是
CREATE TYPE IF NOT EXISTS shift_user_assignment (
id timeuuid,
note varchar,
breaks frozen<list<shift_break>>)
我有名为 shift 的 DB 实体 POJO,具有这两个属性(忽略其他属性)。
@Column("user_assignments")
private List<UserAssignment> userAssignments;
@Column("user_offers")
private List<UserAssignment> userOffers;
我尝试使用 QueryBuilder 更新 user_assignments 和 user_offers。
Update update = QueryBuilder.update(ShiftById.TABLE_NAME);
update.with(QueryBuilder.set("user_assignments", shift.getUserAssignments()))
.and(QueryBuilder.set("user_offers", shift.getUserOffers()))
.where(QueryBuilder.eq("company_id", companyId))
.and(QueryBuilder.eq("id", shift.getId()));
cassandraTemplate.execute(update)
但我收到了
org.springframework.cassandra.support.exception.CassandraTypeMismatchException: Value 0 of type class java.util.ArrayList does not correspond to any CQL3 type; nested exception is com.datastax.driver.core.exceptions.InvalidTypeException: Value 0 of type class java.util.ArrayList does not correspond to any CQL3 type
at org.springframework.cassandra.support.CassandraExceptionTranslator.translateExceptionIfPossible(CassandraExceptionTranslator.java:84) ~[spring-cql-1.5.3.RELEASE.jar:na]
at org.springframework.cassandra.core.CqlTemplate.potentiallyConvertRuntimeException(CqlTemplate.java:946) ~[spring-cql-1.5.3.RELEASE.jar:na]
at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:930) ~[spring-cql-1.5.3.RELEASE.jar:na]
at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:912) ~[spring-cql-1.5.3.RELEASE.jar:na]
at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:278) ~[spring-cql-1.5.3.RELEASE.jar:na]
at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:559) ~[spring-cql-1.5.3.RELEASE.jar:na]
at org.springframework.cassandra.core.CqlTemplate.execute(CqlTemplate.java:1333) ~[spring-cql-1.5.3.RELEASE.jar:na]
如果我使用 Spring Data Cassandra 存储实体,则没有问题。 任何线索我应该映射什么/在哪里/如何映射才能使用 QueryBuilder 更新这两列? 提前谢谢!
【问题讨论】:
-
如果您不向您的问题添加更多信息,这真的很难提供帮助。仍然缺少的是您的 Pojo 实现的样子。您使用了哪些注释?此外,您应该根据我最新的 cmets 更新您的示例。
标签: java cassandra datastax datastax-java-driver cassandra-3.0