scala-salat Google グループでこの質問をしましたが、数日間応答がなかったため、ここで試してみました。
でラップされたコレクションを持つケースクラスがありOptionます。
case class SomeClass(
var name:Option[String]=None,
var addresses:Option[Set[Address]]=None
)
case class Address(
var street:Option[String]=None,
var zip:Option[String]=None
)
ドキュメントはMongoに問題なく保存されます。ただし、findOne( の有無にかかわらずSalatDAO) を使用してこれを取得しようとすると、アドレス フィールドには Address ケース クラスではなく、アドレスを表す JSON テキストが含まれます。
その結果、Lift-JSON はケース クラス内のすべてのフィールドをスキップしますOption[Collection[A]]。を削除して を使用するOptionとaddresses=Set[Address]()、機能します。ただし、JSON にデータのない空のセットが作成され、消費者がエントリを削除したかどうかを更新時に確認する方法がありません。またはSet、消費者がこのフィールドを送信しなかったために空になっています。元のリクエスト。
を使用Optionすると、フィールドが に設定されます。つまり、フィールドNoneが空になったり変更されたりすることを心配する必要はありません。
どんな助けでも大歓迎です。