【发布时间】:2014-03-06 21:53:23
【问题描述】:
使用nHibernate(或者Hibernate作为映射没有区别),我想用下面的SQL创建一个对象:
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 这样基本的事情,但是因为已经有一个内置的工具可以做到这一点。
有什么想法吗?
再次提前致谢。
【问题讨论】:
标签: c# mysql sql hibernate nhibernate