我的案例类有很多字段,如:
case class Person(id: Long, name: String, login: String, passwordHash: String, ...)
我也有网页(播放)来编辑Person
的某些字段。此页面与另一个案例类一起运行,该案例类包含页面上显示的Person
字段的子集:
case class PersonProjection(id: Long, name: String)
有很多这样的预测,有些字段(如id
)可以在许多预测中使用
您能否建议我如何从PersonProjection
构建Person
并使用Person
更新现有PersonProjection
个实例?
当然,我自己实现了这种转变,但也许这种情况有某种最佳实践?一些图书馆或模式?镜片适合吗?
谢谢!
答案 0 :(得分:0)
一种选择是根据Person
:
PersonProjection
case class Person(proj: PersonProjection, passwordHash: String ...)
然后将id作为person.proj.id
等访问,或者向Person
添加帮助方法以更方便地访问它们:
case class Person(proj: PersonProjection, passwordHash: String) {
val id = proj.id
val name = proj.name
}
从投影中更新就像在Person
实例上调用副本一样简单:
val updated = person.copy(proj = projFromForm)
答案 1 :(得分:0)
由于字段映射是任意的,因此无法避免从类到其投影的映射。现在,从类到投影应该非常简单,但是,如果没有默认值,反过来可能会更复杂。您打算在后备存储中搜索某种ID,检索原始对象,然后在其他字段上执行更新吗?
如果有什么可以帮助你的话,那就是它与同构的无形。