HIbernate 模式更新错误

Posted

技术标签:

【中文标题】HIbernate 模式更新错误【英文标题】:HIbernate schema update error 【发布时间】:2010-11-23 15:42:17 【问题描述】:

在 Jboss 服务器启动期间,我得到以下堆栈跟踪。我想知道为什么 JPA 试图改变看起来很好的表以及如何传递这些错误消息。 谢谢

2009-08-03 11:28:49,683 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] 不成功:更改表 BDPARAMS 添加约束 FK61733C48FA34BFDC 外键 (ITEMID) 引用 RTELEMENT 2009-08-03 11:28:49,683 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] 不成功:更改表 BDPARAMS 添加约束 FK61733C48FA34BFDC 外键 (ITEMID) 引用 RTELEMENT 2009-08-03 11:28:49,683 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] ORA-02275:表中已经存在这样的引用约束

2009-08-03 11:28:49,683 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] ORA-02275:表中已存在此类引用约束

2009-08-03 11:28:49,745 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] 不成功:更改表内容添加约束 FK692B5EEC44F32395 外键(父 ID)引用内容 2009-08-03 11:28:49,745 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] 不成功:更改表内容添加约束 FK692B5EEC44F32395 外键(父 ID)引用内容 2009-08-03 11:28:49,745 错误 [org.hibernate.tool.hbm2ddl.SchemaUpdate] ORA-02275:表中已经存在这样的引用约束

【问题讨论】:

您使用什么 RDBMS?你的 hibernate.hbm2ddl.auto 值的设置是什么? 我使用 Oracle 11 G,我使用更新 hibernate.hbm2ddl.auto。仅供参考,即使它显示这些错误应用程序已正确部署并且工作正常。但我想修复这个错误。 【参考方案1】:

在我的例子中,当我将 default_schema name 添加到 Hibernate 配置文件时问题解决了:

<property name="hibernate.default_schema" value="db_default_schema_name" />

具体来说,在 Play framework 2.4 中,我将上述行添加到 conf\META-INF\persistence.xml 文件中。

使用的休眠版本:4.3.11

【讨论】:

【参考方案2】:

我也遇到过类似的错误,问题源于 jdbc 子系统获取元数据时的不准确。元数据回来告诉 hibernate 约束不存在,但实际上它不存在 - 可能有多种原因。我建议尝试不同的 dbms,也可能是由于当前用户和生成表的用户之间存在用户差异。您的映射也可能有问题。

但最终解决它的唯一万无一失的方法是在启动时关闭架构同步。

【讨论】:

【参考方案3】:

我遇到了同样的错误,但通过几个简单的步骤修复了它。

dump当前数据库mysqldump out current.sql 将 hibernate.cfg 更改为 create 以便它重新创建数据库表 转储新数据库 Mysqldump out new.sql

将新建表复制到当前 在 current.sql 中重新插入数据库 mysql

【讨论】:

【参考方案4】:

在我的情况下,我在项目中更改了 java 包结构后出现了错误消息。我认为hibernate对此有点困惑。

我有类似的错误(更改表...添加约束),我正在使用 Oracle DB 10g。 对我来说,最简单的解决方案是导出相关表(插入)的数据,删除它们,再次启动创建表的应用程序,然后再次导入表数据。然后 Hibernate 自己再次创建表,错误信息消失了!

【讨论】:

以上是关于HIbernate 模式更新错误的主要内容,如果未能解决你的问题,请参考以下文章

从 Hibernate3 升级到 Hibernate5 时出现错误

org.hibernate.exception.ConstraintViolationException:无法执行 JDBC 批量更新

Hibernate @OneToMany 错误:键 'PRIMARY' 的重复条目 '0'

Spring Boot 和 Hibernate:打印/记录 DDL

批量插入中的 Postgres 错误:关系“hibernate_sequence”不存在位置 17

关于Hibernate级联更新插入信息时提示主键不为空的问题“org.hibernate.StaleStateException: Batch update returned unexpected r