У меня есть сущность, из которой я хочу иметь несколько таблиц в моей базе данных sql.Hibernate: несколько таблиц одного объекта -> inherit hibernate-mapping
Для примера, у меня есть класс Java, в котором я коллекцию другого класса Java
@Entity
class SqlEntity{
@Id
@Column(unique = true)
private Date date = null;
@Column
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL, CascadeType.PERSIST,
CascadeType.MERGE }, mappedBy = "CollectionData")
private Collection<CollectionData> collectionData = new ArrayList<>();
@Column(name="columNameX")
int attributeX;
@Column(name="columNamey")
int attributeY;
...
}
И я хочу, различные данные в различных таблицах в соответствии с которой данные взяты из: SQL_ENTITY_GERMANY, SQL_ENTITY_USA , SQL_ENTITY_UK, ...
Я был в состоянии сделать это, написав xml-mapping
для каждой таблицы (до этого у меня были только Java аннотаций отображающие объект). Но я должен был написать полное отображение для каждой таблицы, как это:
<hibernate-mapping>
<class name="...SqlEntity" table="SQL_ENTITY_GERMANY"
entity-name="SQL_ENTITY_GERMANY">
<id name="date" type="date" column="date">
</id>
<property name="columnNameX" column="attributeX" type="int" />
<property name="columnNameY" column="attributeY" type="int" />
...
<bag name="collectionData" cascade="all">
<key column="date" />
<one-to-many class="COLLECTION_DATA_GERMANY" />
</bag>
</class>
<class name="...collectionData" table="COLLECTION_DATA_GERMANY"
entity-name="COLLECTION_DATA_GERMANY">
<id name="id" type="long" column="id">
<generator class="native" />
</id>
<property name="columnNameX" column="attributeX" type="int" />
<property name="columnNameY" column="attributeY" type="int" />
...
<many-to-one name="collectionData" class="SQL_ENTITY_GERMANY"
fetch="select">
<column name="date" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
Так что, если я хочу, чтобы изменить что-либо в одном классе сущностей (например, добавление членов), я должен изменить его в каждом xml-mapping
тоже ,
Так что я подумал, что возможно просто наследовать отображение, так что аннотации класса все еще виновны, пока я не перезаписываю его. Я попытался google и поиск в stackoverflow на эту тему, но я нашел только вещи о наследовании классов Java. Или есть другое решение, которое могло бы помочь мне в этом?
вы можете использовать наследование наследования TABLE_PER_CLASS' и иметь один Ab данные сбора травм и несколько наследований – javaguest
@javaguest В соответствии с этим: https://docs.jboss.org/hibernate/orm/3/reference/en/html/inheritance.html#inheritance-tableperclass Таблица для каждого класса предназначена для одного таблица для нескольких реализаций. Но я хочу, чтобы противоположные, несколько таблиц для одной реализации. Или я неправильно понял эту концепцию? – deetz
OK Я думаю, я знаю, что вы сейчас имеете в виду. Используя TABLE_PER_CLASS, мне не нужно каждый раз отображать членов CollectionsData. Хорошо, я попробую это. Спасибо – deetz