【发布时间】:2011-06-20 05:19:35
【问题描述】:
我与旧版 Oracle 数据库集成,该数据库使用分配的 VARCHAR2 值作为主键。我正在与这个现有表创建一对多关系。旧表称为 Applications(我可能不会更改),新表称为 Projects。许多项目可以分配给一个应用程序。
当 GORM 创建 Project 表时,它正在为外键 application_id 创建一个 NUMBER 列,即使这是 Applications 表中的 VARCHAR2 字段。
class Application {
static hasMany = [projects : Project]; // does not fix problem
String application_id;
...
static mapping = {
table 'applications'
version false
id (column:'application_id')
}
static constraints = {
application_id(maxSize:16,blank:false,unique:true,type:"string",generator:"assigned")
}
...
}
class Project {
Application application;
...
}
当我编译应用程序时,我收到如下警告: 不成功:alter table project 添加约束 FKED904B1956694CB5 外键(application_id) ORA-02267: 列类型与引用的列类型不兼容
当我运行应用程序并单击应用程序控制器时,我收到此错误: SQL 状态 [99999];错误代码 [17059];未能转换为内部代表;嵌套异常是 java.sql.SQLException: Fail to convert to internal representation
当我点击项目 |创建我得到这个错误: 未能转换为内部代表;嵌套异常是 java.sql.SQLException: Fail to convert to internal representation at /project/create:172
那么如何设置 Project 类以期望应用程序的 VARCHAR2 外键?
感谢您的帮助!
【问题讨论】:
-
为什么不使用'String'类型的id?
标签: oracle grails grails-orm