0

nosql マップされたエンティティに次のフィールドが必要です。

プライベート リスト cookieIds;

リストのコンバーターを使用できますか? この場合、データはどのように Casssandra に保存されますか?

カスタム コンバーターの作成方法に関するヒントがあれば、ぜひ参考にしてください。

4

1 に答える 1

2

LOL、私たちはそれを処理する @NoSqlEmbedded タグを実装していますが、再帰もできるようにしようとしているので、まだ完全ではありません (@NoSqlEmbedded の階層構造を考えてください)。マーシャリング/アンマーシャリングを実装します。

注: 今週末の終わりまでに @NoSqlEmbedded を単体テストで実行できるようにします。

リスト内のすべてのアイテムは一意である必要があります (つまり、実際にはリストではなくセットです)。次に、これを持っているとしましょう

public Request {
   @NoSqlId
   private String id;
   @NoSqlEmbedded
   private List<String> cookieIds;
   private String property1;
}

こんな感じで収納されます

rowkey(id) -> property1="something"、cookieIds:cookieValue1=null、cookieIds:cookieValue2=null、cookieIds:cookieValue3=null

では、このように保存しない理由を説明する必要があります....

rowkey(id) -> property1="something"、cookieIds=cookieValue1、cookieValue2、cookieValue3

2 台のマシンがここでリクエストを読み込んでいて、1 台のマシンが cookieValue4 を追加し、別のマシンが cookieValueValue2 を削除した場合、実装では正しく cookieValue1、cookieValue3、cookieValue4 になり、2 番目のバージョンのように保存した場合、サーバーが勝つため、これら2つの結果のいずれかになります(理想的には、1つの削除と1つの追加を個別に機能させたい場合)

  • cookieValue1、cookieValue2、cookieValue3、cookieValue4
  • cookieValue1、cookieValue3

それが理にかなっていることを願っています。今、 @NoSqlEmbedded タグがなければ、その 2 番目の方法を使用して、Date の投稿で返信したのと同じように Converter を使用できます。日付コンバーターを作成すると、これを行う方法が理解できると思います。練習として最初に日付コンバーターを試してください。

その後も質問がある場合はお知らせください。

ディーン

于 2012-10-18T01:16:09.163 に答える