我对 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 力量的绝佳机会。
如Features 中所示SORM 的,它从 中抽象出来。全部 关系概念。这包括外键。
外键抽象是通过对您想用外键引用的这些实体的自然直接引用来提供的。所以而不是userId
指向id
的 User
,你应该指向 User
本身与 user
属性(property):
case class User(login: String, firstName: String, lastName: String)
case class UserSite(user: User, name: String, url: String)
在引擎盖下,这将完全转化为您希望使用外键实现的目标。但问题是你不必关心它。
旁注。使用 SORM 时,您应该按照您希望在 Scala 中使用它的方式来设计您的模型,几乎没有任何限制,并且您绝对应该抛开您在设计模型时习惯的所有关系概念。这就是 SORM 的方式。
关于文档和库结构。该方法非常简单:如果没有记录,则不打算将其用作公共(public) API 的一部分。此外,对于 SORM 的当前 (v.
0.3.x
) 结构,公共(public) API 的所有组件都驻留在 sorm._
中。包,所以另一条规则是,如果它不存在,则它不适用于公共(public) API。
关于scala - SORM:我如何声明外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629324/