2016-05-18 10 views
1

私のテーブルのフィールドとしてリストのフィールドをcassandraデータベースに格納する際に問題があります。spring-data-cassandra、Cassandra格納リスト<Integer>フィールドとして

私はspring-data-cassandraバージョン1.4.1.RELEASEを使用しています。

私のモデルが含まれています

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

を私は私のconfigクラスの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> 

答えて

5

OK、spring-data-cass andraソース:

汎用型のデータ型を指定するには、typeArgumentsを追加する必要があります。無効な数のtypeArgumentsが渡されると、問題の例外がスローされます。私の場合、0と1が必要です。

@Column注釈はここでは必要でないことが判明しました。

+1

空のコレクション型の値は、カサンドラからこのように返されるため、「null」であることに注意してください。したがって、リストに要素がない場合、 'position'フィールドも' null'になります。 – mp911de

0

プリミティブまたはラッパータイプのオブジェクトを使用している限り、フィールドにはCassandraType注釈を指定する必要はありません。 以下は私にとってうまく動作します。

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

バージョン1.4.2.RELEASEのspring-data-cassandraを使用しています。 問題が解決しない場合は、更新してください。

関連する問題