Hibernate Identity 列但不是主键

Posted

技术标签:

【中文标题】Hibernate Identity 列但不是主键【英文标题】:Hibernate Identity column but not primary key 【发布时间】:2012-06-16 06:04:16 【问题描述】:

我有一个 sqlserver 2008 r2 数据表,它有一列 autoId int identity(1,1),但它不是主键,另一列是 varchar(20)。 问题是:我如何配置 hbm 文件? 下面是我的配置文件,但是当我尝试保存一个实例时出现错误。 “当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'acct_info' 中插入标识列的显式值。”

        <property name="autoId" type="int">
            <column name="auto_id" not-null="true" unique="true"  />
        </property>

【问题讨论】:

【参考方案1】:

可能有两个原因,要么您在 DB 中没有足够的权限进行 IDENTITY INSERT,要么您尝试在休眠和 DB 层设置标识符的机制不匹配。

你可以在hibernate定义文件中查看你的id生成策略

    在 DB 中,您可以更改为 Set IDENTITY_INSERT to "ON" 选择不同的生成器类

【讨论】:

以上是关于Hibernate Identity 列但不是主键的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate3主键生成策略

HIbernate学习笔记 之 使用

04 主键生成策略

Hibernate常用主键生成策略

hibernate中的主键生成策略

hibernate中的主键生成策略