spring-data-cassandra,Cassandra将列表存储<Integer>为字段



我在cassandra数据库中将List的字段存储为表的字段时遇到问题。

我使用的是弹簧数据cassandra,1.4.1.RELEASE.版本

我的模型包含:

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

我想用SchemaAction自动创建数据库表。我的配置类中的RECREATE_DROP_UNUSED架构操作:

@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>

好的,在挖掘春季数据后找到了解决方案cassandra来源:

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

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

@此处已证明不需要列注释。

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

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

我使用的是版本为1.4.2.RELEASE的spring数据cassandra。如果您仍然面临此问题,请更新。

相关内容

  • 没有找到相关文章

最新更新