gpt4 book ai didi

Scala Slick 表继承

转载 作者:行者123 更新时间:2023-12-04 15:52:28 25 4
gpt4 key购买 nike

我以这种方式实现了 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)

是否可以使用 slick 创建类模型,其中三角形扩展形状和圆形扩展形状?

我看到了 this question ,但我不喜欢将所有派生表列放在一张表中作为可为空的方法。

谢谢!

最佳答案

Slick 是一个关系/功能库。它本身不映射继承。大家说说怎么办Inheritance with Slick in our Scala Days 2013 talk .我们描述了您可以如何做 Single Table Inheritance就像在您引用的帖子中一样。对于 Class Table Inheritance (这似乎是您想要的)我们建议在 Slick 中使用关系对其进行建模。您不会认为“圆形是一种形状”,而是会认为“圆形是一种形状可以承担的角色”。您必须自己保证某些限制。例如,形状不能同时是圆形和三角形。您可以将映射逻辑和约束验证隐藏在 api 后面,您可以将其添加到您的 DAO 中。当您离开 Slick 的关系模式时,您会失去查询的可组合性(无论如何您在 JPA 等中都没有)。我们在Suggested Slick App Architecture中讨论这个和 Composable / Re-usable queries .

关于Scala Slick 表继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com