Я собираюсь приступить к реализации следующего соотношения:Данные, которые изменяются с течением времени в Hibernate
Entity one-to-many Configuration
Но Configuration
будет развиваться с течением времени, в том числе создания будущих Configuration
с, то есть следующие поля в configuration
таблица:
entityId
fromDate
toDate
configurationValue1
configurationValue2
...
fromDate
и toDate
магазин дата, когда конкретная версия информации активна.
Конечная запись в таблице configuration
будет иметь ее fromDate
и очень удаленную toDate
. Добавление нового Configuration
до того, как toDate
обновит текущую последнюю конфигурацию, чтобы иметь toDate
за день до того, как новая конфигурация fromDate
, а новый Configuration
- toDate
будет значением в будущем.
Все это кажется хорошим случае для хорошо определены и проверены DAO возможность получить все Configuration
сек для Entity
, текущий Configuration
в течение Entity
и обновлять будущее Configuration
s (гарантирующего отсутствие дублирования дат конечно), но прежде чем я начну его реализовывать, есть ли что-нибудь в Hibernate, которое могло бы помочь, например, в коде, который мог бы позволить мне это сделать? :
myEntity.getCurrentConfiguration() //perhaps a @Where that uses now() to find the correct Configuration?
Я знаю Hibernate Envers, но я не думаю, что это обязательно правильное использование случае для него. Кажется, что Envers управляет журналами аудита, прозрачно сохраняя историю изменений, сделанных для объекта, тогда как я хочу иметь возможность управлять текущими и будущими значениями объекта, при этом текущее значение основывается на now()
(однако мне нужно способный хранить все старые записи).
Вы можете использовать формулы Hibernate или виды базы данных для этого; см. [этот ответ] (http://stackoverflow.com/a/32027714/4754790). Однако оба будут означать, что соединения между 'Entity' и' Configuration' выполняются всякий раз, когда вы читаете 'Entity', поэтому вам может потребоваться просто выполнить дополнительный запрос, чтобы получить текущую конфигурацию, когда вам это нужно, без сопоставления ее в' Entity' вообще. –