spring-data-cassandra,Cassandra将List <integer>存储为字段

时间:2016-05-18 09:37:21

标签: spring cassandra spring-data-cassandra

我在cassandra数据库中存储了List的字段作为我的表的字段。

我使用的是spring-data-cassandra,版本1.4.1.RELEASE。

我的模型包含:

@Column
@CassandraType(type = DataType.Name.LIST)
private List<Integer> somedata;

我想在我的配置类中使用SchemaAction.RECREATE_DROP_UNUSED架构操作自动创建我的db表:

@Override
public SchemaAction getSchemaAction() {
    return SchemaAction.RECREATE_DROP_UNUSED;
}

尝试创建表,但发生以下异常:

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>

2 个答案:

答案 0 :(得分:7)

好的,在挖掘spring-data-cassandra源代码后找到解决方案:

@CassandraType(type = DataType.Name.LIST, typeArguments = { DataType.Name.FLOAT } )
private List<Float> position;

您需要添加typeArguments,以指定泛型类型的DataType。当传递了这些typeArguments的无效数量时,抛出了有问题的异常。在我的情况下,需要0和1。

这里不需要@Column注释。

答案 1 :(得分:0)

只要您使用原始或Wrapper类型对象,就不需要在字段上提供CassandraType注释。 以下对我来说很好。

@PrimaryKey
int id;
String name;
int num;
List<Integer> marks;

我使用版本1.4.2.RELEASE的spring-data-cassandra。 如果您仍然遇到问题,请更新。