【发布时间】:2012-01-31 22:59:24
【问题描述】:
我设计了一个表(在 postgres 中),其中“id”列通过其 SEQUENCE 实体自动递增。 但是当我开始使用hibernate时我遇到了问题....由于创建了插入语句,它使用了follow语句
INSERT INTO mytable (id, name) VALUE (0, 'blablabla')
...
但我希望它做出这样的想法:
INSERT INTO mytable (name) VALUE ('blablabla')
... Postgres 必须自动生成 id(至少当我使用 sql 编辑器运行此类脚本时,它起作用了)
我相信它可以配置,但我不知道如何......
这是我的 .hbm.xml 的一部分:
<hibernate-mapping>
<class name="com.cse.database.bean.Category" table="category">
<id name="id" type="int">
<column name="id" />
<generator class="assigned" />
</id>
<property name="name" type="string">
<column name="name" length="100" not-null="true" unique="true" />
</property>
</class>
</hibernate-mapping>
【问题讨论】:
-
重要的是它是 PostgreSQL。当您指定
<generator>时,您是在告诉 Hibernate 如何创建 ID。assigned表示您的应用程序正在执行此操作(您不希望这样做)。identity表示数据库会为你做这件事,这 是 你想要的,但 docs.jboss.org/hibernate/core/3.3/reference/en/html/… 没有将 PostgreSQL 列为支持它。也许sequence可以与 PostgreSQL 一起使用?你也可以使用native,它会自动工作...... -
似乎将生成器设置为“身份”解决了我的问题:) 你能把你的消息作为答案发布,我会接受它
-
完成。不确定
identity是否适用于 PostgreSQL,因为 Hibernate 文档没有列出该数据库。
标签: java hibernate postgresql