- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Workspace
和 Document
实体,一个工作区可以包含零个、一个或多个文档。我对此建模的第一种方法是:
case class Workspace(name: String, documents: Seq[Document])
但这不会很好地扩展,因为我的工作区可能包含许多文档。幸运的是,我的业务需求允许我分别处理工作区和文档(从某种意义上说,当我有一个工作区时,没有理由或不变性迫使我考虑其中包含的所有文档)。
问题:我想知道:如何在 Sorm 中为 Workspace
和 Document
建模?这样我就可以在两者之间建立链接但不必加载工作区的所有文档?我想有一个 Repository这将使我能够访问工作区的文档,并支持分页。)
case class Workspace(name: String)
case class Document(name: String, /* ... */)
trait WorkspaceRepository {
def children(ws: Workspace, offset: Long, limit: Long)
}
最佳答案
简单易行!您将它们定义为不相关:
case class Workspace ( name : String )
case class Document ( ... )
然后您选择一种您希望它们链接的方式。我看到两个。
case class WorkspaceDocuments
( workspace : Workspace, documents : Seq[Document] )
然后像这样获取工作区的所有文档:
Db.query[WorkspaceDocuments]
.whereEqual("workspace", theWorkspace)
.fetchOne()
.map(_.documents)
.getOrElse(Seq())
在这种情况下,在实例声明中将 workspace
属性指定为唯一是有意义的:
... Instance (
entities = Set() +
Entity[WorkspaceDocuments]( unique = Set() + Seq("workspace") )
...
)
case class WorkspaceToDocument
( workspace : Workspace, document : Document )
然后像这样获取工作区的文档:
Db.query[WorkspaceToDocument]
.whereEqual("workspace", theWorkspace)
.whereEqual("document.name", "...") // ability to filter docs
.fetch()
.map(_.document)
第一个变体不允许您在查询中过滤文档(至少在 SORM v0.3.* 中是这样),但由于能够在工作区上设置唯一约束,它应该在基于工作区的查询上表现更好。第二种变体更灵活,允许您应用各种过滤器。
关于scala - 如何在 Sorm 中为一个有很多 child 的实体建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863337/
我想为 SORM 中的数字列添加 autoIncrement 属性。我该怎么做? 最佳答案 没有办法在 SORM 中配置它,这是有原因的:实际上只有 id 列需要自动递增属性,而 SORM manag
如何在 Scala 2.11.6 中使用 Sorm,在编译时出现以下错误 [error] Modules were resolved with conflicting cross-version su
从 SORM 文档来看,它并不是很清楚,API 也没有帮助。 那么,如何在实体中指定自定义列名称?我还想更改每个实体的主键的列名。那可能吗? 谢谢。 最佳答案 不。更改列名称是不可能的,因为 SORM
我对 SORM 很感兴趣,但是当我尝试使用它时遇到了问题。假设我有两个实体: case class User(login: String, firstName: String, lastName: S
我将 playframework 2.2.1 与 scala 2.10 和 SORM 0.3.10 一起用于 mysql 数据库。当我试图保存简单案例类的实例时: case class User(em
为了进行独立测试,在每次测试之前删除并创建表或清理它们会很有趣。使用 SORM 有什么简单的方法吗? 最佳答案 您可以为每个测试创建新实例,将 initMode 设置为 DropAllCreate然后
我正在使用 SORM 将一个类持久保存到 MySQL。该类包含我在该类上需要的一两个字段,但不会保留到数据库中。有谁知道如何从表定义中排除这些? 问题是 SORM 不支持该字段的类型。不是问题,因为它
我不熟悉 OR 映射技术。我想知道我是否正在使用 SORM 将数据持久保存到数据库,我该如何处理 future 的数据库架构更改? 例如,这是用户类:案例类 User(name:String, age
我在 SORM 的嵌入式模式下使用 H2 数据库。如果数据库繁忙那么 SORM 就继续等待。没有异常(exception),什么都没有发生。这是误导。 :(那么我该如何设置数据库连接超时呢? 最佳答案
我正在使用最新的 SORM v0.3.15 和 MySQL。 是否可以使用特征作为实体的字段类型?因为我想实现以下内容: trait Votable case class Post(...) exte
我正在使用 Play Framework 2.2.1、MySQL 5.5 和 sorm 0.3.10 由于 MySQL 在指定的空闲超时后丢弃了不活动的连接,我在我的应用程序中遇到了这个异常: [Co
我想遍历 sorm 中特定表的所有记录,但我想以一种内存效率高的方式进行。 我今天使用的代码是: Db.query[Items].whereEqual("title", someTitle).fetc
我已经从 tutorial 创建了简单的 sbt 项目: build.sbt: lazy val sorm_test = (project in file(".")). settings( nam
我有一个 Workspace 和 Document 实体,一个工作区可以包含零个、一个或多个文档。我对此建模的第一种方法是: case class Workspace(name: String, do
我找 SORM非常有趣和有前途,但我找不到一种方法将它与 Play 任何指南相结合? 最佳答案 安装 Play >= 2.1.0。 使用 Play 指南生成项目 将适当的 SORM 和所选数据库的依赖
如何使用 SORM 和 PostgreSQL 在数据库中进行非敏感搜索?我尝试了 whereLike: DB.query[User].whereLike("fullname", "%" + term
ActiveRecord 处理时间戳做这样的事情: 插入数据? created_at 已定义 更新数据? updated_at 被重新定义 我将如何使用 SORM 做到这一点? 最佳答案 乍一看,这样
我一直在尝试让 SORM 与 Play Framework 2.2-SNAPSHOT 以及 2.1.1 一起工作。目前,我正在尝试运行我创建的一个简约示例应用程序,以便更轻松地追踪问题。不幸的是,我收
我在文档中读到“如果字符串字段被索引,它是 VARCHAR(255),否则它是 CLOB” 如果我不想索引字段,但需要 VARCHAR 表示怎么办?例如: case class User(login:
我是一名优秀的程序员,十分优秀!