HibernateException:在MS SQL遗留数据库上使用Grails 2.0.2时,连接表缺少表错误

时间:2012-03-19 19:20:25

标签: sql-server gorm grails-2.0

我正在尝试在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一起使用。

我尝试过的解决方案:

  1. 此代码(因“缺少表格”例外而失败。
  2. 为连接表添加域控制器 - 结果相同。
  3. 任何提示/线索/解决方案都很受欢迎。

1 个答案:

答案 0 :(得分:1)

我通过直接使用Groovy SQL并传入T-SQL来解决这个问题。