我正在尝试研究Hibernate的ID序列生成中的生成器类。
我尝试在非常简单的映射上使用序列生成器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.test">
<class name="Customer" table="Customer">
<id name="id" column="ID" type="long">
<generator class="sequence">
<param name="sequence">CUSTOMER_SEQUENCE</param>
</generator>
</id>
<property name="name" type="string" column="CUSTOMER_NAME" />
</class>
</hibernate-mapping>
我使用的是apache derby,customer表中的ID列只是一个简单的长数据类型。
但是当我尝试执行简单的保存时,我遇到了以下错误。
引起:java.sql.SQLSyntaxErrorException:SEQUENCE'CUSTOMER_SEQUENCE'不存在。 这是否意味着Apache Derby不支持序列生成?感谢
答案 0 :(得分:2)
似乎Derby不支持序列生成。引自官方Derby FAQ:
Derby支持生成的“身份” 列;示例在参考文献中 指南。 IDENTITY_VAL_LOCAL函数 返回最近分配的 号。
正在开展工作以添加SEQUENCE 支持德比10.6。
答案 1 :(得分:2)
Derby现在支持序列生成,如下所示:
http://db.apache.org/derby/docs/10.8/ref/rrefsqljcreatesequence.html