【问题标题】:Error generating sequence in HSQLDB with Hibernate using hbm2ddl使用 hbm2ddl 在 HSQLDB 中使用 Hibernate 生成序列时出错
【发布时间】:2012-05-13 19:40:13
【问题描述】:

在为 HSQLDB 中的 id 字段生成序列时出现错误。映射文件配置如下:

<hibernate-mapping>
    <class name="ddol.rtdb.dto.Configuration" table="RTDB_CONFIGURATION">
        <id name="id" type="int">
            <column name="CONF_ID" />
            <generator class="sequence">
                <param name="sequence">CONF_ID_SEQ</param>
            </generator>
        </id>
        <property generated="never" lazy="false" name="configurationDate"
            type="java.util.Date">
            <column name="CONF_DATE" />
        </property>

当我使用与 oracle 相同的映射时它可以工作,但在使用 HSQLDB 进行测试时不会生成序列。还有什么我应该添加到映射中的吗?

当我尝试向表中插入内容时遇到的错误是:

ERROR org.hibernate.util.JDBCExceptionReporter - user has no privileges or object not found: CONF_ID_SEQ

HSQLDB 版本是 2.2.8,Hibernate 版本是 3.6.10

【问题讨论】:

  • 嗯,很明显HSQLDB中不存在序列CONF_ID_SEQ,你创建了吗?
  • 不,我希望 hbm2ddl 能够创建它,就像它为 oracle 所做的那样
  • 我不知道为什么,但很明显,它还没有被创建。

标签: java hibernate hsqldb


【解决方案1】:

创建序列(CONF_ID_SEQ - 如果它不存在)并确保您拥有"grant" 的权限。
或者,您可以为序列创建一个"synonym",并为所有用户或您想要的特定用户授予"grant" 权限。那么它应该可以工作了。

    E.g  
    Consider, You are creating Sequence as "dbauser". Now, some other "user"(who don't have access) trying to use it,  
then u will get "user has no privileges" error.  
    In that case you can use above strategy.

【讨论】:

    猜你喜欢
    • 2017-11-12
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多