Наследование JPA для сохранения истории сущностей

У нас есть требование сохранять записи истории в отдельных таблицах для наших сущностей. Я посмотрел на Envers, но таблица REVINFO - это проблема для модернизации существующих клиентов и производительности.

Я думал о подходе, при котором каждый или наши «конкретные» объекты (скажем, CUSTOMER) аннотируются с помощью @MappedSuperclass .... данные будут сохранены в таблице CUSTOMER. Мы создадим подкласс класса Customer под названием «CustomerHistory» и добавим нужные нам поля (historyId (первичный ключ), время начала, время окончания), которые будут сохранены в таблице CUSTOMER_ADDRESS.

Будет ли это работать? С помощью JPA обрабатывать первичный ключ в 2 таблицах?

Спасибо.


person Mike Rother    schedule 14.02.2018    source источник
comment
Не могли бы вы рассказать о проблемах модернизации REVINFO и с какими проблемами производительности вы столкнулись?   -  person Naros    schedule 15.02.2018
comment
Аналогичное решение сработало для меня с простым Hibernate.   -  person yegodm    schedule 15.02.2018


Ответы (1)


В случае, если кто-то еще думает об этом... Похоже, это недопустимый вариант. Вот трассировка стека, которую я получил.

Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'entityManagerFactory', определенным в ресурсе пути к классу [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: не удалось вызвать метод инициализации; вложенным исключением является java.lang.ClassCastException: org.hibernate.mapping.SingleTableSubclass не может быть приведен к org.hibernate.mapping.RootClass

person Mike Rother    schedule 15.02.2018