.copy(..)
と を使用し て外部エンティティ内のフィールドを更新できないようですDb.save
。例外はまったくスローされずT with Persisted
、メソッドから返されたものは、更新しようとしたものを正確に反映しています。Db.query
ただし、またはを使用して値を取得しようとすると、Db.fetchById
外部以外のフィールドのみが更新されます。例えば:
case class Foo (a: String)
case class Bar (b: String, barfoo: Foo)
....
....
val foo1 = Db.save(Foo("Hello"))
val bar1 = Db.save(Bar("World", foo1))
val result = Db.save(bar1.copy(b="Beatiful World",
barfoo = bar1.barfoo.copy(a = "Hello My")))
println(result) // Prints: Bar(1,Beatiful World,Foo(1,Hello My))
println(Db.fetchById[Bar](result.id)) // Prints: Bar(1,Beatiful World,Foo(1,Hello))
ご覧のとおり、barfoo
フィールドは更新されていません。
これは、外部エンティティの更新にアプローチする間違った方法ですか? それともこれはバグですか?
私はSORM v0.3.12 btwを使用しています。