问题标签 [joined-subclass]

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 回答
2528 浏览

hibernate - Hibernate 4:HQL 和继承 - 获取集合和 javassist

我有这种情况:父类Person,子类:个人和企业。我正在使用这样的加入子类策略映射这些类:

当我使用这个简单的 HQL 加载人员列表时:

hibernate 解决了多态问题,我得到了个人和企业对象的列表。

但是当我包括地址和电话时:

hibernate 返回一个 Person_$$_javassist_5 对象列表,无法访问 Indivual 和 Enterprise 类的特定属性。

这是预期的行为吗?我怎么能解决这个问题?

提前致谢。

编辑:

我已经包含了 Address 和 Phone 类映射,它的 id 是复合的,这似乎是hibernate 生成javassist代理的原因,但是为什么代理不能正确解析多态性?即使hibernate从数据库中获取所有数据。

我的 JSF 页面抛出 javax.el.PropertyNotFoundException 错误:类“test.Person_$$_javassist_5”没有属性“nameIndividual”。

0 投票
1 回答
697 浏览

hibernate - 在 Hibernate 中创建别名以引用子类问题

我正在尝试创建一些别名来建立一个标准来搜索许多子类的属性。这是我的模型:

我正在尝试为 Person 和 Organization 创建一些别名,如下所示:

但我收到一个错误:

任何帮助解决这个问题?我只想知道如何创建别名来引用子类以访问子类属性。

谢谢!

0 投票
1 回答
144 浏览

asp.net-mvc-3 - Nhibernate 关联实体已保存在数据库中,并带有已加入子类中的新项目

情况如下:我在数据库中拥有一张名为“Entidade”的表,以及一张名为“Medico”的表。表“Medico”是下表中的连接子类实体,如下所示:

用户应该能够使用已经注册的“Entidade”在“Medico”上“打开它”。当我尝试保存扩展具有相同 ID 的类“Entidade”的对象“Medico”时,“Entidade”已保存,出现以下错误:

我的班级“Medico”:

有没有可能进行这种“改造”?

如果您需要其他任何东西来了解情况,请询问。

0 投票
2 回答
3282 浏览

hibernate - 使用 Spring Data JPA 的连接继承时避免跨表的外部连接

考虑 Spring Data JPA (+ Hibernate) 应用程序中的以下类:

我最常见的用例涉及调用以下方法(继承自JpaRepository):

每当调用此方法时,Hibernate 都会发出以下 SQL 查询:

每当执行这个查询时,我只对Person类中的公共字段感兴趣,所以我发现左外连接没用。

问题是在我们的实际应用中,每个子表有8个子类Employee和数Customer百万条记录,导致对父表的查询运行非常慢。

在这种情况下,有没有办法避免跨表的外部连接?请注意,我已尝试使用该DiscriminatorColumn方法,并且在这种情况下仍会执行连接(使用 Hibernate 时)。我还在Polymorphism所有可能的组合中尝试了实体类上的特定于 Hibernate 的注释,并且仍然执行了外部连接。

0 投票
1 回答
2056 浏览

jpa - 在使用 InheritanceType.JOINED 的 JPA 实体层次结构中,与子类的所有关系都会导致超类表上的外键约束

我有以下 JPA 2.0 实体

我想让 JPA 为我生成表,因为它可以更轻松地安装在多个位置。我通常希望它会生成这个:

前两个表相同,但它以employee这种方式生成表:

您会注意到fk_employee_role_id引用的是bookkeepingparent表,而不是role表。我有大量的 JPA 实体,我希望 bookkeepingparent 成为其中大多数实体的超类。这主要是因为一些非常具体的 ID 生成策略和其他簿记活动。这种设计有助于将本书中的所有代码与功能代码分开,并让处理功能代码的程序员不必担心。

在桌子数量增加之前,所有这些都可以正常工作。现在我们看到,对于所有ManyToOneOneToOne关系,JPA 正在生成引用父表的外键。对于 200 个奇数表,插入已经很慢,因为所有外键约束都引用 bookekeepingparent,并且每个实体在第一次持久化时都会插入到 bookkeeping 父表中。我猜这是检查大约 150 个奇怪的约束。

所以,以下是我的问题:JPA 为什么要这样做?这是标准的 JPA 行为吗?(我正在使用 EclipseLink)如果我手动更改数据库架构,他们会遇到什么陷阱吗?

这是我在 StackOverflow 上的第一个问题,我尽力搜索任何现有的答案。抱歉,如果我错过了任何内容。谢谢。

0 投票
1 回答
737 浏览

java - java hibernate - 具有 InheritanceType.JOINED 的重复列

我想用 InheritanceType.JOINED 将超类和子类存储在数据库中。但每次我尝试这样做时,都会出现错误 -Repeated column in mapping for entity: com.inqool.personalpro.entity.QuestionAlgorithm column: id (should be mapped with insert="false" update="false") 这是我的实体:

当我从子类中删除字段“id”时,出现此错误:Could not locate table which owns column [id] referenced in order-by mapping

有任何想法吗?谢谢。

0 投票
0 回答
130 浏览

hibernate - Hibernate:更改基类/子类的插入顺序

我将 Hibernate 与“每个子类的表”方法一起使用。但不幸的是,表定义与为子类方法描述的“最佳实践”略有不同。这是因为数据库管理员不会接受带有子类表中的外键的休眠设计,而是他想要从基类表到子类表的外键

架构如下所示:

我没有机会在没有大量讨论的情况下更改架构。

现在解决问题:

如果我们让hibernate保存一个派生类,插入的顺序是

但是使用此命令,违反了约束 PK<>FK!我想让hibernate做的是首先插入子类A,然后插入“数据包”基类。有谁知道是否可以配置以及在哪里可以配置?

0 投票
1 回答
984 浏览

hibernate - EntityExistsException 使用 @MapsId 持久化第二个实体,而兄弟类在持久化上下文中

我有一个奇怪的问题,我无法真正解决。这是一个例外:

例外很明显,持久性上下文中有一个对象阻止我persist通过。问题是:Employee上下文中根本没有(用调试器检查)!

但是,有一个Talent我想更新的实例也是一个Employee. 它们是这样相关的:

一个人:

有很多角色:

和两者都Talent扩展EmployeePersonRole在那里没有什么特别的)。

当一个人已经是人才并且我使用现有人员的引用构造一个员工并调用

现在 @Id 映射PersonRole看起来不太好,有人可以确认这是导致上述异常的问题吗?我怎样才能做得更好?

表达的是,每个角色都附有一个人,它唯一地标识了该角色的实例。查看 Persistence Context 似乎 Hibernate 正在使用PersonRole#person.idas EntityKey,这似乎导致了异常。

0 投票
0 回答
48 浏览

hibernate - 与休眠技术中的“每个具体类映射表”相关的问题

我试图用休眠来理解继承类型。

当我查看文档时,使用联合子类技术有“每个具体类的表”主题。对此我有一些疑问,

1)。为什么我们需要联合子类映射?
2)。我们什么时候实现联合子类?
3)。为什么我们不能为联合子类使用 id 生成器?
4)。与joined-subclass相比有什么优势?

0 投票
0 回答
129 浏览

hibernate - 休眠加入子类重复键

谢谢你的好奇心,我需要你的帮助:)。

因此,我创建了一个联合继承:父类称为“Action”,子类称为“AwardAction”和“LevelUpAction”。我使用休眠注释和 3 个表创建了 3 个类。它工作了几个月,但最近出现了问题。

问题是我们发现两个条目 'LevelUpAction' 和 'AwardAction' 具有相同的 id,与 'Action' 中的一个条目相关!
[动作id=502]
/ \
/ \
[AwardAction id=502] [LevelUpAction id=502]

这种情况不应该发生。每个 levelUpAction 和 AwardAction 都应该有自己的 id...

我们检查了代码,但没有发现任何问题。实际上,在这种情况下不应该创建任何 AwardAction。我们认为已经创建了一个 LevelUpAction 条目(如预期的那样),并且休眠(由于未知原因)也创建了一个 AwardAction 条目。

实际上,我想了解您对表格和课程的看法。

课程:



表: