Преобразование типа объекта в подтип с помощью NHibernate / Hibernate - PullRequest
0 голосов
/ 09 декабря 2010

Не могли бы вы помочь мне найти лучшее решение для следующей проблемы ... В моей доменной модели есть иерархия:

class Document { 
  Int Id; 
  String Title; 
}
class Agreement : Document { 
  DateTime Signed; 
}

Постоянная стратегия - таблица для класса.Т.е. 2 таблицы: «Документы» (Id, ...) и «Соглашения» (Fk_document, ...)

Первая операция - регистрация документа.На данный момент я не знаю настоящий тип документа.Поэтому я создаю новый документ и заполняю его свойство «Заголовок».

Через некоторое время я получаю дополнительную информацию.В соответствии с этим ранее зарегистрированным документом фактически было соглашение, которое было подписано в какой-то момент.Теперь я могу заполнить свойство «Подписано» Соглашения.

Но для этого необходимо каким-то образом преобразовать тип из документа в соглашение.Я мог бы сделать SQL-вызов следующим образом:

INSERT INTO AGREEMENTS (FK_DOCUMENT, SIGNED_DATE) VALUES ( 1111111, TO_DATE('01-01-2000') ) 

(где '1111111' - это идентификатор, который Hibernate назначает документу при первом его сохранении)

Я считаю, что это не лучший способвсе!Но я не мог найти других ... Спасибо!

(Я придумал этот пример, реальный вариант использования довольно сложный, и я не хочу загромождать вопрос. Документы должны быть сохранены каккак можно скорее)

1 Ответ

1 голос
/ 09 декабря 2010

Когда вам нужно «изменить класс» сохраняемого объекта, это признак того, что вы не хотите моделировать это как иерархию классов. Вместо этого используйте состав.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...