【问题标题】:Hibernate Envers - REVINFO table doesn't existHibernate Envers - REVINFO 表不存在
【发布时间】:2014-12-01 00:50:17
【问题描述】:

我使用的是 Hibernate 4.3.6,我尝试通过将 @Audited 注释添加到我的 @Entity 类之一来使用 Envers 功能。 (envers jar - hibernate-envers-4.3.6.Final.jar - 在我的 CLASSPATH 上。)

当我运行我的代码时,在没有 @Audited 注释的情况下可以正常工作,我得到一个 org.hibernate.exception.SQLGrammarException:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbname.REVINFO' doesn't exist

我没有看到任何关于必须创建 REVINFO 表的文档,所以我假设它会自动创建,但这似乎没有发生。我错过了什么吗?

(如果我手动创建它,按照这里描述的架构 - http://thinkinginsoftware.blogspot.co.il/2011/03/auditing-entities-with-hibernate-jpa.html - 然后我得到一个例外, *_AUD 不存在。我想我对所有 *_AUD 表都有同样的问题。)

谢谢, 鲁文

【问题讨论】:

    标签: hibernate hibernate-envers


    【解决方案1】:

    是的,请参见下文:第 7 章。您需要每个实体的 REV INFO 表和审计表,默认情况下命名为 {entity name}_AUD,尽管这是可配置的。要让它们自动生成,您需要启用 Hibernate 模式生成。

    http://docs.jboss.org/envers/docs/

    我通常针对测试数据库运行模式生成,然后使用一些 DB 工具将更改同步到应用程序数据库。

    有关可用于生成 DDL 的 Ant 任务的详细信息,另请参见此处:

    http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-generateschema

    【讨论】:

    【解决方案2】:

    请重新检查您是否已添加 <prop key="hibernate.hbm2ddl.auto">update</prop>property 在 spring 配置文件中。

    我也有同样的问题,只是通过添加上面的属性来解决它。

    谢谢。

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,在属性文件中添加以下行修复了该问题。

      spring.jpa.hibernate.ddl-auto=update
      

      【讨论】:

        猜你喜欢
        • 2014-07-03
        • 2015-05-05
        • 2016-02-03
        • 2021-07-17
        • 2017-02-24
        • 2015-12-08
        • 2020-01-03
        • 1970-01-01
        • 2015-08-20
        相关资源
        最近更新 更多