spring-data-cassandra,Cassandra 存储 List<Integer> 作为字段
spring-data-cassandra, Cassandra storing List<Integer> as field
我在 cassandra 数据库中将列表的字段存储为我的 table 的字段时遇到问题。
我正在使用 spring-data-cassandra,版本 1.4。1.RELEASE。
我的模型包含:
@Column
@CassandraType(type = DataType.Name.LIST)
private List<Integer> somedata;
我想在我的配置 class:
中使用 SchemaAction.RECREATE_DROP_UNUSED 架构操作自动创建我的数据库 tables
@Override
public SchemaAction getSchemaAction() {
return SchemaAction.RECREATE_DROP_UNUSED;
}
它尝试创建 table,但出现以下异常:
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: expected 1 of typed arguments for the property 'somedata' type is 'interface java.util.List' in the entity <my class here>
好的,在深入研究 spring-data-cassandra 源后找到了解决方案:
@CassandraType(type = DataType.Name.LIST, typeArguments = { DataType.Name.FLOAT } )
private List<Float> position;
您需要添加typeArguments,指定泛型类型的DataType。当传递这些 typeArguments 的无效数量时,将抛出上述异常。在我的例子中有 0 和 1 是必需的。
证明这里不需要@Column注解。
只要您使用原始类型或包装类型对象,就无需在该字段上提供 CassandraType 注释。
以下对我来说很好。
@PrimaryKey
int id;
String name;
int num;
List<Integer> marks;
我正在使用 spring-data-cassandra 1.4 版。2.RELEASE。
如果问题仍然存在,请更新。
我在 cassandra 数据库中将列表的字段存储为我的 table 的字段时遇到问题。
我正在使用 spring-data-cassandra,版本 1.4。1.RELEASE。
我的模型包含:
@Column
@CassandraType(type = DataType.Name.LIST)
private List<Integer> somedata;
我想在我的配置 class:
中使用 SchemaAction.RECREATE_DROP_UNUSED 架构操作自动创建我的数据库 tables@Override
public SchemaAction getSchemaAction() {
return SchemaAction.RECREATE_DROP_UNUSED;
}
它尝试创建 table,但出现以下异常:
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: expected 1 of typed arguments for the property 'somedata' type is 'interface java.util.List' in the entity <my class here>
好的,在深入研究 spring-data-cassandra 源后找到了解决方案:
@CassandraType(type = DataType.Name.LIST, typeArguments = { DataType.Name.FLOAT } )
private List<Float> position;
您需要添加typeArguments,指定泛型类型的DataType。当传递这些 typeArguments 的无效数量时,将抛出上述异常。在我的例子中有 0 和 1 是必需的。
证明这里不需要@Column注解。
只要您使用原始类型或包装类型对象,就无需在该字段上提供 CassandraType 注释。 以下对我来说很好。
@PrimaryKey
int id;
String name;
int num;
List<Integer> marks;
我正在使用 spring-data-cassandra 1.4 版。2.RELEASE。 如果问题仍然存在,请更新。