2012-01-09 42 views
4

我有一个嵌入式类ABC从另一个嵌入式类XYZ扩展。 ABC的对象嵌入在一个实体中。与该实体相对应的表格仅包含ABC的元素而不包含XYZ的元素。我该怎么做才能得到他们呢?在JPA中扩展嵌入式类

我听说Descriptor Customizer会工作。我应该怎么做?有没有其他方法?

+0

Err,将所需的列添加到表中。如果ABC扩展XYZ,则它是XYZ,因此XYZ的所有字段在表中都是必需的。如果他们没有必要,那么你不应该有ABC扩展XYZ。 – 2012-01-09 09:10:41

+0

美国广播公司是不是唯一的类扩展XYZ – 2012-01-09 09:27:58

+0

那么,什么?我的观点依然存在如果您与其他扩展类有相同的问题,那么它们也不应该扩展XYZ。 – 2012-01-09 09:34:38

回答

0

您需要在DescriptorCustomizer中为XYZ设置InheritancePolicy classIndicatorField。然后,您需要为扩展XYZ的ABC定义聚合描述符,您可能需要一个SessionCustomizer。

1

This document of oracle javaEE可能会帮助你。据此,InheritanceType.SINGLE_TABLE是默认策略。您的需求可能需要InheritanceType.TABLE_PER_CLASS。

它已在Entity Inheritance Mapping Strategies主题中描述过它,但我相信它也可能适用于“嵌入式”。

0

有人可以举例说明如何编写这个DescriptorCustomizer? 我有同样的事情,我的XYZ类有一串字符串和uids。 我无法获得具有嵌入式ABC的对象来显示来自XYZ的字段。 (我能够做到这一点的唯一方法就是将获得者放在ABC中,用于所有XYZ领域并且没有好处)