0

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

我尝试过的解决方案:

  1. 此代码(因“缺少表”异常而失败。
  2. 为连接表添加域控制器 - 结果相同。

任何提示/线索/解决方案表示赞赏。

4

1 回答 1

1

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

于 2012-03-30T13:27:11.210 回答