У меня снова возникли вопросы по hibernate.
Как замапить следующие таблички.
create table document(
id int,
foo varchar
)
create table description(
document_id int,
description_type int,
contents varchar
)
Суть в том что я хочу вывалить все дескрипшены в отдельную таблицу и связать ее с документом как один к нолю или одному.
Есть примеры как связать один-к-одному, но я не хочу создавать пустышки в таблице дискрипшенов.
Что делаю сейчас (сокращенно):
<class name="Document">
<id>
<generator class="native">
</id>
<property name="foo">
<set name="reason" inverce="true">
<key column="document_id" />
<one-to-many class="Reason"/>
</set>
<set name="changeDescription" inverce="true">
<key column="document_id" />
<one-to-many class="ChangeDescription"/>
</set>
</class>
<class name="Description">
<id name="documentId" column="document_id">
<generator class="foreign">
<property name="property">Document</property>
</generator>
</id>
<discriminator column="document_type" type="short">
<property name="contents">
<many-to-one name="document" column="document_id" class="Document" cascade="all">
<subclass name="Reason" discriminator-value="1">
<subclass name="ChangeDescription" discriminator-value="2">
</class>
Это попытка сделать следующее:
1. Получить для зависимой таблицы дескрипшенов автоматическую подстановку ключа из таблицы документа.
2. Иметь возможность хранить различные типы дескрипшенов в одной таблице.
3. Иметь 0 дескрипшенов любого типа для документа. Т.е. один к нулю или одному.
Не совсем уверен, что делаю все правильно. И вообще хотелось бы понять как сделать граничение на количество записей на стороне "многие".
Я предполагаю что можно сгенерить дополнительный код используя мета тег.
Но что-то такая перспектива не очень радует.
Еще один вопрос. По версионности.
Имеет ли смысл заводит версию в детальных записях? Обновится ли версия мастера если я поредактирую коллекцию деталей?
Я над этим задумался, когда получил сообщение об ошибке о невозможности обновить версию для записи в коллекции, при удалении всего документа.
Опять про Hibernate
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)