使用NHibernate(或Hibernate作为映射没有区别),我想用下面的SQL创建一个对象:NHibernate的(休眠)自动递增的专属
CREATE TABLE `table` (
`EntityId` binary(16) NOT NULL,
`Number` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`EntityId`),
Key(`Number`)
);
香港专业教育学院尝试使用生成的属性,附加的ID标签,在属性标签下的列标签中指定sqltype,并混合默认值,插入,更新和非空属性,但似乎没有任何工作。我只是无法映射此Hibernate映射语法?我如何获得不是自动增加主键的属性?
我会发布映射我有,但没有一个工作。
在此先感谢
更新: 使用这个映射我认为这是一个很好的起点,但不完全是我想要的:
<class name="TheEntity" table="table">
<id name="Id"
column="EntityId"
generator="guid.comb" />
<property name="Number"
generated="insert"
insert="false" update="false" />
</class>
在数据库中的模式是这样产生的:
CREATE TABLE `table` (
`EntityId` binary(16) NOT NULL,
`Number` int(11) DEFAULT NULL,
PRIMARY KEY (`EntityId`)
);
这不是理想的行为。 nHibernate也不会通过某种方式将序列插入到Number中。生成的属性,如上所示,从我读什么依赖于数据库完全通过像触发器一样的插入和更新。我不想使用触发器来完成像auto_increment这样基本的事情,但是因为已经有了一个内置的工具。
任何想法?
再次提前致谢。
只是告诫你的答案,如果你的序列不存在于数据库中,您需要使用SQL脚本创建它,或者将hibernate设置为创建 - 删除模式,以便Hibernate将为您创建序列。 – JamesENL
通过Id注释使主键?我需要主键为EntityId,但是辅助键和auto_increment是我复制到许多行的 – Droydn
。我认为它会产生序列而不使用ID – s7474