Рассмотрим автомобиль с контрактами, изменениями, техническим обслуживанием, дилерами и т. Д.
Когда в контракте есть обновление, вы найдете revision_id и revision_timestemp , и если вы перейдете к contract_aud, вы можете найти по reivsion_id новую версию.
Моя цель - предоставить конечному пользователю запрос, по которому он может спросить: какие автомобили (во множественном числе) имели ревизии между startDate и endDate. Обратите внимание, что пересмотр может быть в контракте / обслуживании / дилере и т. Д. (А меня интересуют только идентификаторы автомобиля)
Из того, что у меня есть сегодня, можно запросить по дате следующим образом:
AuditReader auditReader = AuditReaderFactory.get(em);
AuditQuery q = auditReader.createQuery().forRevisionsOfEntity(Car.class, false, true);
q.add(AuditEntity.revisionProperty("timestamp").ge(startDate.getTime()));
q.add(AuditEntity.revisionProperty("timestamp").lt(endDate.getTime()));
Но вы можете заметить, что я отправляю Car.class , и если изменение было внесено в ' контракт ', мне нужно будет отправить Contract.class (и позже получить идентификационный номер автомобиля)
У меня более 20 таблиц с постфиксом _AUD, поэтому нет смысла 20 раз переходить на базу данных.
Вопрос: как можно запросить ревизию, произошедшую между датами и номером ревизии, и объект , который был изменен.