2016-08-17 7 views
2

セーブエンティティ用にSpringブート、Cassandra、org.springframework.data.repository.CrudRepositoryを使用します。SpringのCrudRepositotyを使用してNULL値を持つエンティティを保存します。

私は次のエンティティを持っている:

@Table("user") 
public class User implements Serializable { 
    @PrimaryKey 
    private UUID id; 
    private String name; 
... 
} 

リポジトリ:

public interface UserRepository extends CrudRepository<User, UUID> {} 

保存エンティティ:データベースにNULL値を持つ属性を書き込みません

user.setName(null); 
userRepository.save(user); 

CrudRepository

理由MappingCassandraConverter.javaで

はCrudRepository使用してNULL値を保存するためにいくつかの方法がありますか?

答えて

3

6月28日に修正されます。 はnullが MappingCassandraConverterによって書かれたINSERTおよびUPDATE文でnull値を許可することで 値と我々は今、プロパティの列の削除をサポートし、次のURL https://github.com/spring-projects/spring-data-cassandra/pull/72

の表情を持っています。オブジェクトはすべて永続的な プロパティとともに格納されます。挿入と更新では、NULL以外の値の条件付き挿入 は実行されませんが、すべての値が考慮されます。

現在のリリースが

<version>1.4.2.RELEASE</version> 

である私は、あなたが次の公式リリースを待つことができますいずれか、またはあなたはこのURL http://projects.spring.io/spring-data-cassandra/#quick-startに行くことができ、この変更は

<version>1.5.0.BUILD-SNAPSHOT</version> 

上にあると思いますが 、ダウンロードの横にあるドロップダウンメニューで1.4.2の代わりに1.5.0のスナップショットを選択します。システムが稼動している場合は、次回の正式リリースを待つようお勧めします。私は1.5.3.RELEASEを使用してい

+0

私は** ** 1.5.3.RELEASEを使用していますが、問題がまだ存在しています。 \t \t \t \t(値== NULL){ \t \t \t \t \t戻った場合。 \t \t \t \t} \t \t \t \t場合(ログ。{0} {}} - {{}} "、property.getColumnName()。toCql()、value);を追加します。 \t \t \t \t} – Daniel

1

希望は、これは役立ちますが、問題がまだ存在しています。

if (value == null) { 
    return; 
} 

if (log.isDebugEnabled()) { 
    log.debug("Adding insert.value [{}] - [{}]", property.getColumnName().toCql(), value); 
}   
関連する問題