2015-06-26 3 views
1

Я создал 3 класса объектов с именем NodeBase, NodeDocument и NodeFolder.JPA TABLE_PER_CLASS Наследование: создана абстрактная таблица сущностей

И, используя таблицу для каждого класса Наследование СТРАТЕГИЯ и, как это определено в таблице на наследование классов таблица определяется для каждого конкретного класса в иерархии наследования, в этом случае NodeBase является абстрактным объектом но таблица этого объекта создается по имени NODEBASE.

Entity relationship diagram

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
public abstract class NodeBase implements Serializable { 

    @Column(name="NBS_UUID") 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long uuid; 

    @Column(name="NBS_NAME") 
    @Basic 
    private String name; 

    @ManyToOne(targetEntity = NodeFolder.class) 
    private NodeFolder parent; 

} 


@Entity 
@Table(name="SDM_NODE_DOCUMENT") 
public class NodeDocument extends NodeBase implements Serializable { 

    @Column(name="NDC_MIMETYPE") 
    @Basic 
    private String mimeType; 

} 

@Entity 
@Table(name="SDM_NODE_FOLDER") 
public class NodeFolder extends NodeBase implements Serializable { 

    @OneToMany(targetEntity = NodeBase.class,mappedBy = "parent") 
    private Collection<NodeBase> children; 
} 

Как создать классы сущностей, таким образом, что только две таблицы должны быть созданы по имени SDM_NODE_DOCUMENT и SDM_NODE_FOLDER?

enter image description here

+0

Возможно, о том, что ваша реализация JPA может помочь, потому что наличие таблица для абстрактного смысла не имеет смысла с этой стратегией –

+0

Использование реализации Eclipselink JPA. – jGauravGupta

ответ

0

затмение ссылка Сообщается, чтобы сделать это, по крайней мере, в более ранних версиях, некоторые люди говорит, что это ошибка, или, возможно, не просто таблица, порожденная EclipseLink сделать объединение всех таблиц наследование.

Если родительский класс является абстрактным вы можете использовать @MappedSupperclass вместо @Entity, чтобы избежать этой заметки создания таблицы, если вы не quering абстрактного класса