【问题标题】:Using Scala Play and Slick, how do I pass non-trivial relationships to the view使用 Scala Play 和 Slick,我如何将重要的关系传递给视图
【发布时间】:2013-10-28 14:53:24
【问题描述】:

我正在考虑使用 Play 构建应用程序。想象一个典型的电子商务领域模型:客户、订单、订单行项目、产品。

在研究持久性的各种选项时,建议似乎是避免在 Scala 中使用 ORM 层并使用不同的抽象,例如 Slick。

我遇到的困难是,使用 ORM,我可以将单个“订单”对象传递给我的视图,然后它可以使用现有关系从客户、订单行和产品中提取相关信息。使用 Slick,我目前正在将 (Order, Customer, Seq[(OrderLine, Product)]) 的元组传递给视图以提供相同的信息。如果您开始使模型更加复杂,例如在客户对象上添加地址,它很快就会变得非常混乱。

这是推荐的方法还是我遗漏了什么?我找到了几个 Play-Slick 示例应用程序,但它们只有 1 或 2 个实体,因此它们并没有真正解决我在这里提出的问题。

【问题讨论】:

    标签: scala playframework playframework-2.0 slick play-slick


    【解决方案1】:

    看看 Slick-Examples,尤其是:This one 如果你正确地实现了你的类,你应该能够通过Order-object 访问Customer-object,反之亦然(例如order.customer.name 或类似的东西来访问客户的名字)。

    【讨论】:

    • 这个例子有帮助,但问题是用户表实际上并没有将我映射回用户对象,只有字段的元组。 object Users extends Table[(String, Int, Option[Int])]("USERS") 一种可能的解决方案是创建单独的 User 对象,一个仅包含外键,另一个包含实际对象。跨度>
    • 您应该引入案例类以方便交互:Mapped Tables。有了这个你会得到一个User 而不是一个元组。查看foreignKey 以及您的映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多