首页 > 解决方案 > 如何在 Grails 3 中将属性传递给 Enver?

问题描述

我在我的 Grails 应用程序中使用 Hibernate Envers,并尝试设置该org.hibernate.envers.audit_strategy属性。配置它的正确方法是什么?

我尝试将以下内容添加到application.yml

org.hibernate:
    envers:
        audit_strategy: 'org.hibernate.envers.strategy.ValidityAuditStrategy'

我对此尝试了几种变体,还尝试将其设置为application.groovy,但我无法让 Envers 阅读它。

我宁愿将它包含在项目源中,而不是在命令行中设置它。

更新:

另一个不起作用的配置(application.yml):

hibernate:
    additionalProperties:
        org.hibernate:
            envers:
                audit_strategy: 'org.hibernate.envers.strategy.ValidityAuditStrategy'

更新 2:

我在调试器中注意到配置中有一个嵌套映射,如下面的屏幕截图所示。这会阻止AuditEntitiesConfiguration正确读取属性,因为它只是使用map.get.

为什么会这样?我的 YAML 格式有问题吗?

在此处输入图像描述

我尝试将此属性的 YAML 设置简化为一行,但没有帮助:

org.hibernate.envers.audit_strategy: 'org.hibernate.envers.strategy.ValidityAuditStrategy'

标签: hibernategrailsconfigurationhibernate-enversgrails-3.3

解决方案


我发现我可以通过修改Application类来使它工作:

    static void main(String[] args) {
        System.setProperty('org.hibernate.envers.audit_strategy', 'org.hibernate.envers.strategy.ValidityAuditStrategy')
        GrailsApp.run(Application, args)
    }

我愿意接受更好的解决方案。


推荐阅读