问题标签 [multi-table-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
81 浏览

ruby-on-rails - 使用嵌套表单实现多表继承时“无法批量分配受保护的属性”

嗨,我正在尝试在我的应用程序中实现 MTI。我有一个 Person 模型和 2 个继承自它的模型:Client 和 TeamMember。创建团队成员时,我想将个人(名字和姓氏,电子邮件等)和团队成员(经验级别,团队类型,是否领导)保存到数据库值。我正在使用嵌套属性表单,因此在我的团队成员表单中我嵌套了人员字段。不幸的是,我在尝试保存时收到“无法批量分配受保护的属性:人”错误。谁能告诉我如何解决这个问题?谢谢!楷模:

更新了 TeamMember 类,但同样的错误 也尝试了 people_attributes 和 people_attributes 并且这些都不起作用

控制器如下:

和观点:

更新的 TeamMembersController(感谢 Tiago 提供的解决方案)

0 投票
1 回答
723 浏览

hibernate-entitymanager - @NaturalId 仅在根实体(或其@MappedSuperclasses)上有效,在联接的多表继承中使用自然 ID

基本上我无法通过在搜索选项卡中粘贴根异常“ @NaturalId 仅在根实体(或其@MappedSuperclasses)上有效”在谷歌中找到一些类似的问题。我正在使用加入的多表继承策略将我的具体/子实体StudentEmployee),包括他们的抽象父Person)映射到我数据库中的三个表,到目前为止我从来没有遇到过问题,直到我意识到我需要使用学生的studentId为我的学生实体实现自定义查询. 我设法从实体管理器中提取了底层的 Hibernate-session,现在我可以清楚地看到并使用我心爱的 HibernateSession 中需要的方法(我们都知道 Hibernate 有用于 naturalIds 的方法,例如(byId、byNaturalId 等)。 ),并且这些方法对于查询实体真的非常有用。所以我只是用@NaturalId注释我的studentId 数据成员,直到.. 我执行了一些操作(保存/创建),然后向我抛出多行异常。而根本原因是..

我将粘贴我的实体的代码以获取更多信息

Parent 抽象基

人物

实体子

学生

问题:我可以做些什么来对不同的学生实体进行唯一查询吗?因为 Hibernate 的 naturalId 方法对于执行诸如 get 或 update 等实体的操作非常有用

是否有任何解决方法可以在不牺牲实体和数据库表的设计的情况下完成我想要的工作?如果可能的话,我希望 studentId 充当 naturalId 。请有任何建议/帮助/意见。任何事情都将不胜感激。

0 投票
1 回答
105 浏览

sql - Rails 数据库级别的多继承

我想为我的 Rails 应用程序实现多表继承。我熟悉 STI 的工作原理,并且想知道实现是否类似。

我的情况如下(表名已更改):

我有一张 Employee 表,而 Employee 有很多看门人和程序员。看门人和程序员有许多不同类型的工作用具,所以保管桌适合看门人,而技术桌适合程序员。好吧,工作可能是无穷无尽的,并且工作(看门人、程序员等)的属性不同,因此它们必须是单独的表。我想合并一个名为 Jobs 的表,该表属于 Employee。这个表 Jobs 将有一个 job_type(这里它可以是管理员或程序员)和一个 utensil_type(保管,技术)。我怎样才能正确地实现这个场景试图实现的目标?

我知道类型对于 STI 的重要性,所以我想知道如何为我的 rails 问题实现这个 MTI?

0 投票
1 回答
749 浏览

ruby-on-rails - Rails 与多个外键和数据库约束的多态关联

我一直在玩多表继承和数据库约束。我知道 Rails 的理念是处理代码中的约束而不是数据库中的约束,但我想两者都做。我也知道多态关联,但它们不会让你强制执行约束。

所以这是我的场景,而不是在guidesimageable_type中拥有and ,我想拥有and (在我的情况下,我将只有两个外键)。这让我可以像这里解释的那样创建一个约束。imageable_idemployee_idproduct_id

但是现在,我有一个问题,我需要创建一个条件关系,而 rails 似乎没有为此提供任何东西。我需要一个imageable与产品或员工相关的关系,具体取决于填写的字段。

任何建议如何在 Rails 中做到这一点?我知道如何在 SQL 中进行约束,我的问题实际上是如何在 Rails 中实现这种多态关系。

再一次,我知道如何在没有数据库约束的情况下做到这一点,但数据库约束是我问题的重点:)

0 投票
0 回答
56 浏览

python - Django多表继承创建父母

例如,如果我有以下内容:

那么是否可以只创建一个学生,但电子邮件、密码和姓名进入用户表和用户模型以及链接到学校?

并且在数据库中,它将在 User 表中显示b的 User 属性,在 Student 表中显示 Student 属性(具有一对一关系)。

再次感谢 :)

(我不尝试它的原因是因为可能会出现问题。我现在不得不重置整个项目大约 6 次,因为我在测试东西时不小心:()

哦,我应该在 2 上使用 Python 3 吗?我目前正在使用 2 并且没有真正深入使用 3,而且我也是 Django 的新手(因此所有问题)。3 是否更适合 Django 开发?

0 投票
1 回答
1473 浏览

django - Django将“选择”添加到继承的模型字段

使用多表继承,我有两个模型:

使用这些模型,我可以这样做:

这非常简单,但我不喜欢在某些情况下允许人们定义任意颜色值。例如,我想阻止用户创建Bluebird颜色字段设置为除"blue"或之外的任何对象,在更罕见的情况下,"grey""brown"。换句话说,我想在模型内的继承字段choices上设置 kwarg 。从粗略的互联网搜索来看,Django 目前似乎不允许模型子类覆盖父级的字段。colorBluebird

在为子类定义可接受的选择时,如何保留color对父类中字段的访问权限?

编辑:这个问题的重点是 Django < 1.8。在 1.8 中,添加了为字段的choiceskwarg 传递可调用对象的能力,虽然这很好,但我正在处理一个尚未升级的系统,目前升级不是一个选项。

0 投票
1 回答
53 浏览

ruby-on-rails - 多表继承查询

环境:

A是一个模型

  • 带有属性 [name, email, actable_id, actable_type]

B 和 C 是 A 的子类型(作为 MTI 关系)

使用这个 gem 来模拟 MTI

A.rb

B.rb

C.rb

问题:对类型 B 的查询返回任何具有父 A 的表条目,包括 C。

0 投票
1 回答
322 浏览

django - 如何在django的多表继承中获取父对象

我有以下两个使用多表继承的模型。PlayerAchievment 扩展了OverallAchievment:

我想在 PlayerAchievement 子函数中提取有关父级匹配属性的一些信息。

我怎么做?

0 投票
2 回答
14815 浏览

django - Django 1.9:字段与父模型中不存在的字段的字段冲突

我有一些简单的模型,Profile、Certifier 和 Designer,后者继承自 Profile(多表继承)。在 Designer 中,Certifier 有一个外键。

在 Django 1.8 中,这非常有效,但在 1.9 中我得到了;

django.core.management.base.SystemCheckError: SystemCheckError: 系统检查发现了一些问题:

错误:

check.Designer.certifier:(models.E006)字段“certifier”与模型“check.profile”中的字段“certifier”冲突。

(在这种情况下,Profile.type 无关紧要,我只需要它来区分登录的用户配置文件类型)。

check.profile 显然没有“验证者”字段。这是一个错误还是我错过了什么?同样的事情发生在另一个项目中。

0 投票
0 回答
477 浏览

django - Django select_related 上的多表继承

我正在尝试使用select_related多表继承查找。
我的代码有一些缺点,想知道是否有更好的解决方案

有了上面的类定义,我想序列化父母(异构)

我可以

但是当有多个子模型时它有自己的问题(它需要为每个子类加入)