我们有一个最初在Grails 2下开发的应用程序,但我们最近迁移到Grails 3.当我们创建原始表时,我们将生成的外键重命名为更易读的东西。现在在Grails 3下,我们在尝试加载/运行应用程序时遇到异常。
我们使用的是Grails 2.3.9,GORM 6.1.6.RELEASE,Hibernate5 6.1.6
在上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.context.ApplicationContextException:无法启动嵌入式容器;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'hibernateDatastoreServiceRegistry'的bean时出错:在设置构造函数参数时无法解析对bean'hibernateDatastore'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'hibernateDatastore'的bean时出错:通过构造函数的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.grails.orm.hibernate.HibernateDatastore]:构造函数抛出异常;嵌套异常是org.hibernate.tool.schema.spi.SchemaManagementException:无法对JDBC目标执行模式管理[alter table message add constraint FKnk6v4vlnstxdwedmm8wp6olvi foreign key(pref_id)reference parent_ref]
这是抱怨它试图运行的以下SQL:
alter table message add constraint FKnk6v4vlnstxdwedmm8wp6olvi foreign key (pref_id) references parent_ref
但这是现有的(稍微编辑过的)表:
create table MESSAGE
(
ID NUMBER(19) not null primary key,
VERSION NUMBER(19) not null,
PREF_ID NUMBER(19) not null constraint FK_MESSAGE_PREF references PARENT_REF,
TYPE CHAR(2 char) not null,
)
/
外键已经到位,只是命名不同。 Grails / GORM / Hibernate用于将FK_MESSAGE_PREF
识别为有效的外键,但现在却没有。我们有办法识别现有的外键吗?