问题标签 [single-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 回答
219 浏览

inheritance - propel 1.5.2 的继承问题

在推进 1.3 和 1.4 中,以下继承结构运行良好。

然而,当你创建一个新的继承时,使用推进 1.5

我收到以下错误

现在几乎要解决这个问题,我可以从扩展部分中删除 lib.propel。但是当我创建一个引用继承类的继承时,我仍然会遇到同样的错误,即。

(有或没有 lib.propel)

我不确定这是错误还是配置问题,但我找不到任何处理这种情况的文档。我想我需要能够声明 lib.propel,因为我们在这里有我们使用的类,还有另一个名为 rwf.lib 的目录中的类,正如您从上面粘贴的表格的 baseClass 中看到的那样。

希望有人能指出我正确的方向。

0 投票
1 回答
1080 浏览

ruby-on-rails - Ruby on Rails 中的控制器继承——父类中的模型和控制器访问

我在 StudentHours 和 TeacherHours 中使用单表继承,它们有一个父 Hours。

模型代码大部分在hour.rb中,student_hour.rb和teacher_hour.rb中很少

现在我意识到大部分控制器代码也是重复的,所以我创建了一个 hours_controller 作为students_controller 和teachers_controller 的父级。因为 hours_controller 实例化了诸如 TeacherHours.new 之类的模型对象,所以我在子类中创建了一个访问器,例如:

...然后 hours_controller 只需调用 MyModel.new

有时还会引用其他模型,有时我什至在视图上调用“渲染”,因此我也在子类中为这些模型创建了访问器。

我找不到其他人这样做的例子。那么,这是否出于某种原因不好,还是有更好的方法?

0 投票
3 回答
692 浏览

ruby-on-rails - Rails 的单表继承是如何工作的?

我有一个用户表和一个我新创建的老师。老师是用户的子类,所以,我使用脚手架生成器生成老师表,然后,我修改模型做老师是用户的子类。毕竟,我做了一个 db:migrate。然后,我去

http://localhost:3000/teachers/new

它显示一个错误:

所以,我的问题是我做错了什么?我想创建一个用于用户注册的页面,用户只能是老师/学生。但是我不能添加教师记录……而且,我去

http://localhost:3000/users/new

我想要一个组合框,允许用户将他们的用户注册为“老师”或“学生”。但一切似乎都不像我预期的那样工作。我需要做什么?非常感谢您的帮助。

0 投票
4 回答
33903 浏览

java - Hibernate,单表继承和使用超类中的字段作为鉴别列

我有以下几种用于休眠实体层次结构的类。我试图有两个具体的子类Sub1ClassSub2Class. 它们由field中定义的鉴别器列 ( )分隔MappedSuperClass。有一个抽象实体类EntitySuperClass被其他实体引用。其他实体不应该关心它们是否实际引用Sub1ClassSub2Class

这实际上可能吗?目前我收到此错误(因为列定义在 Sub1Class 和 EntitySuperClass 中被继承了两次):

如果我添加@MappedSuperClassEntitySuperClass,那么我会从 hiberante 得到断言错误:它不喜欢一个类既是实体又是映射的超类。@Entity如果我从中删除EntitySuperClass,则该类不再是实体,并且无法从其他实体中引用:

MappedSuperClass是外部包的一部分,所以如果可能的话,它不应该被改变。

我的课程:

0 投票
3 回答
16943 浏览

ruby-on-rails - 使用单表继承更改 Rails 中 ActiveRecord 类的类型

我有两种类型的课程:

其中acts_as_authentic 使用Authlogic 的身份验证系统。这种继承是使用单表继承实现的

如果有新用户注册,我将他注册为用户。但是,如果我已经有一个具有相同电子邮件的 BaseUser,我想将该 BaseUser 更改为数据库中的一个用户,而不是简单地将所有数据从 BaseUser 复制到用户并创建一个新用户(即使用新的ID)。这可能吗?谢谢。

0 投票
3 回答
1926 浏览

sql - 您应该在视图中使用单表继承还是联合的多个表?

假设您有一张便笺表。注释可以是关于特定帐户、订单行或订单的。

  • 关于帐户的注释不适用于任何特定的订单行或订单。
  • 有关订单行的注释也适用于父订单和附加到订单的帐户。
  • 订单上的注释也适用于附加帐户,但不适用于订单行。

注释表

这个想法是,如果我查看一个客户,我可以看到所有在某种程度上相关的笔记。最初,我为上述每个创建了一个注释表,并将它们合并到一个视图中。这里的问题在于编辑/删除记录。可以在特定项目上或在帐户或订单的通用注释视图中编辑/删除注释。这种方法使这变得更加困难。

然后我切换到单表继承模式。我的 notes 表具有 AccountId、OrderId 和 OrderLineId 的可为空值。我还添加了 NoteTypeId 来明确识别记录。更容易管理更新/删除方案。

我对这种方法仍有一些问题和疑问。

  • 完整性 - 尽管可以在 SQL 和/或代码中设置复杂的约束,但大多数 DBA 不喜欢 STI 方法。
  • 一堆空值的想法是有争议的(尽管我相信 SQL 2008 中的性能基于空值的存储有所提高)
  • RDBMS 中的表不必在代码中表示对象。表中的规范化并不是说表必须是唯一的对象。我相信前两句话是真的,你说什么?

这里讨论了一些。 过度使用数据库中的可空列是“代码异味”吗?我不得不说我同意伊恩的观点,但我也喜欢一些相反的观点。

0 投票
4 回答
20453 浏览

ruby-on-rails - 使用 STI 时如何将 ActiveRecord 对象转换为另一个类?

我目前正在使用 ActiveRecord 单表继承。

如何将我的模型从 A 类型转换为 B?他们有同一个父母。

0 投票
1 回答
262 浏览

ruby-on-rails - 从多个数据源创建相同的模型

这主要是一个设计模式问题。我有一种模型,我将获取数据以从多个来源创建它们。因此,例如,我可以从 API 创建一个记录,而另一个记录是通过 Nokogiri 的屏幕抓取创建的。

我的问题在于如何最好地抽象出这些不同的数据源。现在我正在构建返回相同哈希的库类,然后我用它来设置模型的属性。但我想知道这是否不是更多使用 STI 的案例。或者,如果有其他方法可以做到这一点,我只是没有考虑。

0 投票
1 回答
179 浏览

java - 这是hibernate的好设计吗?

我在 SINGLE_TABLE 继承中有一个父实体Service和一个子ExtendedService

第三个实体ServiceCollector需要同时包含实体 Service 和 ExtendedService。这是一个固定的要求,通过这种设计,我可以使用多态性来实现它。

问题:我经常只需要检索父类服务,所以我通过鉴别器列查询它......我认为这对我的目的来说是一个糟糕的设计,不是吗?

这是一个简单的例子,确实我有很多服务子类,例如一个销售不同产品的商店,每个产品可以有不同的属性。

提前致谢。

0 投票
1 回答
692 浏览

entity-framework-4 - Using a navigation property as discriminator in a TPH inheritance scenario in Entity Framework 4

I am trying to create a TPH inheritance hierarchy using foreign keys / navigation properties as discriminators and I am having some trouble getting it right.

I have the following entities:

with PlaneId and CarId beign FKs. I have corresponding tables in a database and I can create a conceptual model using the VS2010 EF wizard. The Person entity then has two navigation properties, Car and Plane.

Now I want to derive two types from Person:

So, I add the entity Pilot, tell it to map to Person and add the condition PlaneId is not null. At this point Visual Studio (or edmgen I guess) complains that the property Person.PlaneId with 'IsNull=false' condition must be mapped.

What is my next step? I have tried various approaches, but can't seem to get it to work. Any insight would be greatly appreciated.