我正在尝试在Windows 7上使用Grails 2.0.1建立多对多的关系。我已经用尽了谷歌,这个网站和我的Grails书籍。没有任何效果。我正在连接到MS SQL Server 2005数据库,我只有READ权限,是 - 它是一个遗留数据库。 2个单独表中的所有内容都可以正常工作(查看确定和全部)但是当我尝试添加连接表代码时出现错误:
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:缺少表: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一起使用。
我尝试过的解决方案:
任何提示/线索/解决方案都很受欢迎。
答案 0 :(得分:1)
我通过直接使用Groovy SQL并传入T-SQL来解决这个问题。