@Table(name =“ REVINFO”,catalog =“ another_catalog”)的目录值可以用外部配置文件的值替换吗?

时间:2018-07-06 11:23:06

标签: java spring hibernate spring-boot hibernate-envers

我使用Hibernate Envers创建了一个自定义的REVINFO实体。该实体是:

@Entity
@RevisionEntity(AuditRevisionListener.class)
@Table(name = "envers_info", catalog = "another_catalog")
public class AuditEnversInfo extends DefaultRevisionEntity {

    @Column(name = "user_id")
    private String userId;
}

我的问题是,如何基于外部配置文件(例如SpringBoot中的application.properties值)替换@Table批注上的catalog字段的值? 我希望它是动态的,所以一旦我将外部配置文件更改为另一个目录/架构,它将自动更改其目录/架构以保留审核的记录。

1 个答案:

答案 0 :(得分:0)

Envers允许您通过指定两个值之一来通过配置来设置此值,具体取决于数据库平台的实现。

org.hibernate.envers.default_schema
org.hibernate.envers.default_catalog

由于您已确定数据库平台要使用 catalog 配置而不是 schema 配置,因此只需在常规的休眠属性配置文件中提供此配置即可

org.hibernate.envers.default_catalog=another_catalog

您可以在许多地方定义此配置

  • application.yml使用的application.propertiesspring-boot文件中。
  • 在您的SessionEntityManager工厂的spring应用程序的Java配置中。
  • 在应用程序的类路径的根目录中的hibernate.properties文件中。