Grails dbCreate ='validate'无法识别现有表

时间:2012-08-07 17:39:00

标签: sql-server grails datasource gorm

我的dataSource配置如下:

development {
    dataSource {
        dbCreate = "validate"
        url = "jdbc:sqlserver://myservername"
    }
}

我的SQL Server“myservername”有一个数据库“products”,其中包含“dbo”拥有的表“inventory”。这是我的库存类映射:

static mapping = {
    table 'products.dbo.inventory'
    version false
    columns {
        id column: 'itemKey'
        itemId column: 'itemId'
        inactive column: 'inactive'
    }
}

当我尝试运行该应用时,出现此错误:

嵌套异常是org.hibernate.HibernateException:缺少表:products.dbo.inventory

此外,当我将dbCreate从“验证”更改为“更新”或任何其他更新时,它可以正常工作。

任何想法为什么?

提前致谢,
Skudder

编辑以回复问题 -

我将更改合并到我的对象中,但仍然出现错误。这是我的目标:

class Inventory {

Integer id
String itemId
String description
Boolean inactive

static mapping = {
    table 'products.dbo.inventory'
    version false
    columns {
        id column: 'itemKey'
        itemId column: 'itemId'
        description column: 'description'
        inactive column: 'inactive'
    }
}

static constraints = {
    itemId (maxSize: 30)
    description (maxSize: 100)
}

static hasMany = [productInventoryDefaults: ProductInventoryDefaults, productTreeNodes: ProductTreeNodes]

String toString() {
    return this.itemId
}

}

和表:

CREATE TABLE [dbo].[inventory](
[itemKey] [int] NOT NULL,
[itemId] [varchar](30) NOT NULL,
[description] [varchar](100) NOT NULL,
[inactive] [bit] NOT NULL,
 CONSTRAINT [PK_Inventory] PRIMARY KEY CLUSTERED 
(
[itemKey] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

1 个答案:

答案 0 :(得分:2)

我相信Hibernate无法看到如何生成主键。

我会尝试:

  • id字段更改为IDENTITY;
  • 或/和调整id field mapping以使用Java端generator;
  • 或者,甚至更简单,尝试使用dbCreate = "create"和适当的权限连接到测试数据库,查看Hibernate将创建的表结构,并将表更改为该表。

如果你需要完整地保留表结构,那么只有第二种方式。