我对SORM非常感兴趣,但是当我尝试使用它时,我遇到了问题。假设我有两个实体:
case class User(login: String, firstName: String, lastName: String)
case class UserSite(userId: Int, name: String, url: String)
如何声明外键关系UserSite.userId - >用户身份?我看到了类ForeignKey,但是没有任何使用它的例子。
谢谢。
答案 0 :(得分:10)
展示SORM力量的绝佳机会。
如SORM的Features所示,它抽象出 ALL 关系概念。这包括外键。
外键抽象是通过对要使用外键引用的这些实体的自然直接引用提供的。因此,userId
指向id
的{{1}},而不是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。