Envers没有创建自定义修订表

时间:2018-04-12 12:43:31

标签: hibernate spring-boot hibernate-envers

我有一个带有自定义版本实体的应用程序,但是当我部署时,它会创建一个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; }
}

修订实体监听器:

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);
    }

Spring配置文件属性:

 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

question不适用,因为我使用Spring启动,并且没有带有手动映射的.xml文件

我真的无法看到我在这里做了official guide任何想法吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我会留下答案,说明我如何对此进行整理,以防万一在相同情况下可以帮助其他人。

在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和我可以个性化修订实体:

"org.wwarn.surveyorDM.config.envers"