Я создал 3 класса объектов с именем NodeBase
, NodeDocument
и NodeFolder
.JPA TABLE_PER_CLASS Наследование: создана абстрактная таблица сущностей
И, используя таблицу для каждого класса Наследование СТРАТЕГИЯ и, как это определено в таблице на наследование классов таблица определяется для каждого конкретного класса в иерархии наследования, в этом случае NodeBase
является абстрактным объектом но таблица этого объекта создается по имени NODEBASE.
@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?
Возможно, о том, что ваша реализация JPA может помочь, потому что наличие таблица для абстрактного смысла не имеет смысла с этой стратегией –
Использование реализации Eclipselink JPA. – jGauravGupta