Hibernate Envers - REVINFO 表不存在

标签 hibernate hibernate-envers

我正在使用 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 表都有同样的问题。)

谢谢,
鲁文

最佳答案

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

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

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

另请参阅此处了解可用于生成 DDL 的 Ant 任务的详细信息:

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

关于Hibernate Envers - REVINFO 表不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221688/

相关文章:

java - JPA/Hibernate entityManager.persist(..) 使实体的集合变为 null,即使它们已保存

java - 排除带有 JPQL "not in"的项目

hibernate - 使用@Index 注解时指定索引方法

java - 使用 AuditQuery 获取关联实体

java - 使用 hibernate - envers 并获取历史记录时,池连接没有空闲连接?

java - PostgreSQL, hibernate : Moving contents of db to text file/XML file for storage purposes

mysql - Spring jpa hibernate mysql LocalDate 在坚持一天后关闭

java - hibernate 恩弗斯 : How to check if a field has changed between two revisions?

java - Hibernate Envers - 选择 "all"更改实体 ID

java - 返回 Hibernate envers Audit revision with modified flags