Сначала основные факты: веб-приложение Java, Spring, Hibernate, MySQL.
Ситуация такова, что у меня есть сложная объектная модель, например, Автомобиль . Это
состоит из множества объектов (Engine, Tyres, ...) с отношениями «многие к одному» и «один ко многим» между ними.
Сейчас существует много автомобилей, и время от времени кто-то осматривает автомобиль и создает Отчет о проверке. Отчет относится ко многим частям автомобиля, отображает их свойства и т. Д.
До сих пор система не поддерживала возможность обновления свойств автомобиля и его частей после их загрузки в систему. Это означает, что если цвет шасси или количество шин были изменены, старые отчеты будут отражать это изменение, а не то, что мы хотим.
Хорошо, теперь эта функция была запрошена. Автомобили и их части должны быть модифицируемыми, и должна быть создана история версий. Старые отчеты должны ссылаться на старые версии частей и их значения.
Я смотрел на « Медленно меняющиеся размеры », и кажется, что управление версиями автомобиля и его частей может быть выполнено с использованием подхода типа 6.
То, что мне трудно понять (возможно, из-за моего ограниченного опыта Hibernate), заключается в следующем:
Как собрать экземпляры отчетов в Hibernate, чтобы они ссылались на правильные версии каждой части автомобиля? В отчетах указана дата, и в каждой версии деталей автомобиля будут диапазоны дат они были действительны, поэтому я думаю, что я мог бы сделать это с некоторым сложным HQL / SQL. Но есть ли более простой и автоматический способ сделать это с помощью Hibernate?