我对 SORM 很感兴趣,但是当我尝试使用它时遇到了问题。假设我有两个实体:
case class User(login: String, firstName: String, lastName: String)
case class UserSite(userId: Int, name: String, url: String)
如何声明外键关系 UserSite.userId -> User.id?我看到类 ForeignKey,但没有任何使用它的例子。
谢谢你。
一个展示 SORM 力量的绝佳机会。
正如 SORM 的特性中所指出的,它从所有关系概念中抽象出来。这包括外键。
外键抽象是通过对您想用外键引用的这些实体的自然直接引用来提供的。因此,您应该使用属性指向自身,而不是userId
指向id
of :User
User
user
case class User(login: String, firstName: String, lastName: String)
case class UserSite(user: User, name: String, url: String)
在引擎盖下,这将完全转化为您希望使用外键实现的目标。但问题是你不必关心它。
旁注。使用 SORM 时,您应该按照您希望在 Scala 中使用它的方式来设计您的模型,几乎没有任何限制,并且您绝对应该抛开您在设计模型时习惯的所有关系概念。这就是 SORM 的方式。
关于文档和库结构。该方法非常简单:如果没有记录,则不打算将其用作公共 API 的一部分。此外,对于 SORM 的当前 (v. 0.3.x
) 结构,公共 API 的所有组件都驻留在sorm._
包中,因此另一条规则是,如果它不存在,则它不适用于公共 API。