从播放框架的anorm库的2.3.0版本开始,特性Pk
被弃用,它建议使用其子类Id
和NotAssigned
(documentation )。
但是,如果我们有一个可以采用Id
或NotAssiged
的变量怎么办?
具体来说,在我的代码中,我有一个class Person(id: Pk[Long], name: String)
。使用Pk
作为id
的类型,我可以创建Person(NotAssigned, "kostas")
之类的新用户,或者从我的数据库Person(Id(3), "kostas")
中获取现有用户。
如何将代码迁移到不使用已弃用的Pk
特征,但保留相同的功能?
答案 0 :(得分:7)
Pk[A]
与结构Option[A]
相同,Id[A](value)
对应Some[A](value)
,NotAssigned
对应None
。
因此建议的迁移将使用Option[Long]
。我不太了解开发人员的情况。决定弃用Pk[A]
,但不是Id[A]
和NotAssigned
,因为如果没有它,两者基本上都是无用的。尽管如此,Option
对你来说也是一样的,而anorm处理它也是一样的。
答案 1 :(得分:3)
正在添加有关此弃用的迁移说明:https://github.com/playframework/playframework/pull/3029/files。以前的答案是关于选项使用的。
最佳