Envers не создает пользовательскую таблицу ревизий
У меня есть приложение с настроенной сущностью Revision, но при развертывании оно создает приложение REVINFO по умолчанию:
Ревизионная сущность:
@Entity
@Table(name = "CustomRevisionEntity", catalog = "molecular")
@RevisionEntity(CustomRevisionEntityListener.class)
public class CustomRevisionEntity extends DefaultRevisionEntity {
private String username;
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
}
Прослушиватель Entity Entity:
public class CustomRevisionEntityListener implements RevisionListener {
public final static String ANONYMOUS_USERNAME = "anonymous";
@Override
public void newRevision(Object revisionEntity) {
CustomRevisionEntity exampleRevEntity = (CustomRevisionEntity) revisionEntity;
String currentUserLogin;
if(SecurityUtils.getCurrentUserLogin().isPresent())
currentUserLogin = SecurityUtils.getCurrentUserLogin().get();
else
currentUserLogin = ANONYMOUS_USERNAME;
exampleRevEntity.setUsername(currentUserLogin);
}
Свойства пружинного профиля:
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
database: MYSQL
show-sql: true
generate-ddl: true
hibernate:
ddl-auto: update
naming:
physical-strategy: org.wwarn.surveyorDM.config.HibernateAuditTablesNamingStrategy
properties:
hibernate.id.new_generator_mappings: false
hibernate.cache.use_second_level_cache: true
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: true
hibernate.cache.region.factory_class: org.hibernate.cache.jcache.JCacheRegionFactory
Версия Envers - 5.2.12
Этот вопрос не применим, потому что я использую Spring boot и у меня нет XML-файла с ручными сопоставлениями
Я действительно не вижу, что я делаю что-то отличное от официального руководства. Есть идеи?
1 ответ
Хорошо, так что я оставлю ответ о том, как я с этим разобрался, просто на случай, если это поможет кому-то еще в такой же ситуации.
В Spring у нас есть возможность указать сущности, которые мы хотим, чтобы приложение сканировало при запуске, в моем случае мне нужно было указать это при условии, что мне пришлось импортировать сущности из других модулей через maven, поэтому при добавлении entityScan, например:
@EntityScan(basePackages = {
"org.wwarn.malaria.server.data",
"org.wwarn.chassis.server.data",
"org.wwarn.surveyorDM.domain.vivax",
"org.wwarn.surveyorDM.domain"})
Мы говорим нашему приложению о поиске сущностей в этих пакетах и только в этих пакетах, моя конфигурация для RevisionEntity была в config.envers, поэтому все, что мне нужно было сделать, это добавить следующую строку в мой @EntityScan, и я мог персонализировать Revision Entity:
"org.wwarn.surveyorDM.config.envers"