【问题标题】:Hibernate Apache Derby Custom SequenceHibernate Apache Derby 自定义序列
【发布时间】: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 不支持序列生成?谢谢

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    Derby 似乎不支持序列生成。引用官方Derby FAQ

    Derby 支持生成的“身份” 列;示例在参考 指导。 IDENTITY_VAL_LOCAL 函数 返回最近分配的 号码。

    正在进行添加 SEQUENCE 的工作 支持 Derby 10.6。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 如果您使用的是 3.6.0 Final 之前的休眠版本,您可能会遇到这个问题:hibernate.atlassian.net/browse/HHH-5427
      • 当然,我有这个错误,并更新到 Hibernate 3.6.10.Final ;)
      猜你喜欢
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2023-03-31
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多