2

次のように構成された dataSource があります。

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

私の SQL Server "myservername" には、"dbo" が所有するテーブル "inventory" を持つデータベース "products" があります。これが私の Inventory クラスのマッピングです。

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

アプリを実行しようとすると、次のエラーが発生します。

ネストされた例外は org.hibernate.HibernateException: Missing table: products.dbo.inventory です

また、dbCreate を「validate」から「update」またはその他のものに変更すると、正常に動作します。

理由はありますか?

よろしくお願いします、
スカダー

質問に答えるように編集 -

変更をオブジェクトにマージしましたが、まだエラーが発生します。これが私のオブジェクトです:

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
4

1 に答える 1

2

ここで、Hibernate には主キーの生成方法を確認する手段がないと思います。

私は次のいずれかを試みます:

  • idフィールドを に変更しIDENTITYます。
  • または/およびJava側を使用するようにidフィールドマッピングgeneratorを微調整します。
  • または、さらに簡単に、dbCreate = "create"適切な権限でテストデータベースに接続してみて、Hibernate が作成するテーブル構造を確認し、テーブルをその構造に変更します。

テーブル構造をそのまま保持する必要がある場合は、2 番目の方法しかありません。

于 2012-08-09T07:11:11.517 に答える