我通过这种方式实现了SQL表继承:
Table Shape:
Column | Type
------------+---------
shape_id | integer
square | foat
name | character varying(64)
Table Triangle
Column | Type
------------+---------
shape_id | integer
a | float
b | float
c | float
Foreign-key constraints:
"fkey1" FOREIGN KEY (shape_id) REFERENCES Shape(shape_id)
Table Circle
Column | Type
------------+---------
shape_id | integer
r | float
Foreign-key constraints:
"fkey2" FOREIGN KEY (shape_id) REFERENCES Shape(shape_id)
Run Code Online (Sandbox Code Playgroud)
用光滑的方法可以创建三角扩展形状而圆扩展形状的类模型吗?
我看到了这个问题,但我不喜欢将所有派生表列都放在一个表中为可为空的方法。
谢谢!
Slick 是一个关系/函数库。它本身并不映射继承。我们在 Scala Days 2013 演讲中讨论了如何使用 Slick 进行继承。我们描述了如何进行单表继承,就像您引用的帖子中一样。对于类表继承(这似乎是您想要的),我们建议使用关系在 Slick 中对其进行建模。你不会认为“圆是一种形状”,而是会认为“圆是形状可以承担的角色”。您必须自己保证某些限制。例如,形状不能同时是圆形和三角形。您可以将映射逻辑和约束验证隐藏在 api 后面,然后将其添加到 DAO 中。当您离开 Slick 的关系模式时,您就会失去查询的可组合性(无论如何,在 JPA 等中都没有这种可组合性)。我们在建议的 Slick 应用程序架构和可组合/可重用查询中讨论了这一点。
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |