0

私は生年月日、カテゴリなどの多くの属性を持つ playOrm にマップされたエンティティを持っています。

初めて NoSqlEntityManager.put を使用して、このエンティティを Cassandra に保存したとします。私は次のように書いた:

NoSqlEntityManager em =...;
Entity e = new Entity();
entity.id = 123
entity.birthDate = 20121212
em.put(e);

その後、しばらくして、次のことを行います。

NoSqlEntityManager em =...;
Entity e = new Entity();
entity.id = 123
entity.categories = {"cat1", "cat2", "cat3"};
em.put(e);

カサンドラはどうなる?新しいエンティティが作成されますか? それとも古いものが更新されますか(望ましい)?更新された場合、birthDate は 2 回目の書き込みで消去されますか? (望ましくない)

4

1 に答える 1

1

em.put(e, false); 更新に使用できますが、ほとんどの場合、インデックスが変更/変更されたかどうかを把握する必要があるため、値を読み取ります。

em.put(e) を実行すると、データベース内のbirthDate が null に変更されます。

これは面白いですけどね。あなたの場合のように null がデータベースに書き込まれないことを示すために、エンティティの各フィールドにフラグを設定する必要があるのではないかと思います。@Column(nullsWritten=false) がある場合、問題は、実際に特別なケースで null を書き込みたい場合、その場合に null をどのように書き込むかということになります。何か案は?

上記のエンティティに @NoSqlIndexable を持つフィールドはありますか?

ありがとう、ディーン

于 2012-10-23T19:23:55.717 に答える