我试图在 Windows 7 上使用 Grails 2.0.1 建立多对多关系。我已经用尽了谷歌、这个网站和我的 Grails 书籍。没有任何效果。我正在连接到一个我拥有只读权限的 MS SQL Server 2005 数据库,是的 - 它是一个旧数据库。2 个单独的表中的所有内容都可以正常工作(视图 OK 和全部),但是当我尝试添加连接表代码时出现错误:
org.hibernate.HibernateException:缺少表:dbo.IN_USR_DRAWING_PRIV
该表确实存在,我可以使用 IntelliJ 的 IDEA 10.5 数据源视图和 MS SQL Server Management Studio 看到它。错误的相关部分是这个(如果需要,我可以发送更多......更多):
org.springframework.beans.factory.BeanCreationException:创建名为“transactionManagerPostProcessor”的bean时出错:bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.HibernateException: Missing table: dbo。IN_USR_DRAWING_PRIV
以下是 2 个域类:
class Drawing {
static hasMany = [appusers:Appuser]
String id
String drawingId //this is in the join table
String drawingName
static transients = ['name']
void setName(String name) {
id = name
}
String getName() {
return id
}
static mapping = {
table name: "IN_DRAWING", schema: "dbo"
version false
id column: 'DRAWING_ID', generator:'identity', insertable:false, updateable:false
drawingId column: "`DRAWING_ID`",insertable:false, updateable:false //this is in the join table
drawingName column: "`DRAWING_NAME`"
appusers column: '`USR_ID`',
joinTable: 'IN_USR_DRAWING_PRIV'
}
}
class Appuser {
static belongsTo = Drawing
static hasMany = [drawings:Drawing]
String id
String usrId //this is in the join table
String usrName
static transients = ['name']
void setName(String name) {
id = name
}
String getName() {
return id
}
static mapping = {
table name: 'IN_USR', schema: "dbo"
version false
id column:'USR_ID', generator:'identity', insertable:false, updateable:false //this is in the join table
drawings column: 'DRAWING_ID',
joinTable: 'IN_USR_DRAWING_PRIV'
usrName column: "`USR_NAME`"
}
}
这是连接表的架构:
dbo.IN_USR_DRAWER_PRIV
USR_ID (PK, varchar(23), not null)
DRAWING_ID (PK, FK, varchar(23), not null)
PRIV_ID (PK, int, not null)
GRAG 报告它具有所有 3 列的复合键,它与 DRAWING_ID 上的 FK 一起使用。
我尝试过的解决方案:
- 此代码(因“缺少表”异常而失败。
- 为连接表添加域控制器 - 结果相同。
任何提示/线索/解决方案表示赞赏。