我目前正在JBoss 6上运行一个应用程序(没有问题),我试图升级到在WildFly 10.1上运行。大部分升级进展顺利。但是,从Hibernate 3.4(在JBoss 6上)到Hibernate 5.1(在WildFly 10.1上)的升级导致了一些问题。
具体来说,在我的persistence.xml中,我包含以下属性。
lag
请注意:作为升级的一部分,我不会进行任何架构或其他数据库更改。此外,我指的是在JBoss 6 / Hibernate 3.4实例下成功运行的同一个数据库实例。因此,我确信在首次使用WildFly 10.1 / Hibernate 5.1版本时,包含此属性应该没有实际的工作/更新。
但是,包含此属性似乎1)错误地确定它需要进行更新,2)未能成功完成。它导致以下堆栈跟踪:
<property name="hibernate.hbm2ddl.auto" value="update"/>
同样,有问题的表和索引已经存在(由最终错误确认)。
Hibernate现在不再区分大小写(COMPANY_ID_INDEX与company_id_index不同)吗?
如果是这样,我该如何配置它以使它像以前一样不区分大小写(Postgres默认所有这些都降低了......)
TIA!
答案 0 :(得分:1)
卫生署!脸掌!我最近发现使用Hibernate 3.4 / JBoss 6创建hbm2ddl索引时也发生了类似的错误,正如我现在遇到的Hibernate 5.1 / Wildfly 10.1;但是,它们并不妨碍持久性模块的成功启动。从本质上讲,他们只是被巧妙地压制。我不确定这是否是与Hibernate版本相关的预期更改,因为它们确实阻止它在Hibernate 5.1 / Wildfly 10.1中启动?
这里的根本问题是Postgres中整个架构的索引名称必须是唯一的。因此,每个具有FK到COMPANY_ID列的多个实体必须各自具有索引的唯一名称。指数是Postgres中的关系(推动跨模式要求的独特性)。
感谢您对这种混淆的建议和道歉。