Hibernate Apache Derby 自定义序列
Posted
技术标签:
【中文标题】Hibernate Apache Derby 自定义序列【英文标题】:Hibernate Apache Derby Custom Sequence 【发布时间】:2010-12-25 05:02:59 【问题描述】:我正在研究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列就是一个简单的long数据类型。
但是当我尝试执行简单的保存时,我遇到了以下错误。
原因:java.sql.SQLSyntaxErrorException:SEQUENCE 'CUSTOMER_SEQUENCE' 不存在。 这是否意味着 Apache Derby 不支持序列生成?谢谢
【问题讨论】:
【参考方案1】:Derby 似乎不支持序列生成。引用官方Derby FAQ:
Derby 支持生成的“身份” 列;示例在参考 指导。 IDENTITY_VAL_LOCAL 函数 返回最近分配的 号码。
正在进行添加 SEQUENCE 的工作 支持 Derby 10.6。
【讨论】:
【参考方案2】:Derby 现在支持序列生成,如下:
http://db.apache.org/derby/docs/10.8/ref/rrefsqljcreatesequence.html
【讨论】:
如果您使用的是 3.6.0 Final 之前的休眠版本,您可能会遇到这个问题:hibernate.atlassian.net/browse/HHH-5427 当然,我有这个错误,并更新到 Hibernate 3.6.10.Final ;)以上是关于Hibernate Apache Derby 自定义序列的主要内容,如果未能解决你的问题,请参考以下文章
Derby 在使用 Maven 时给出 ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver