关于OpenJPA的HSQLdb权限

时间:2010-06-01 17:07:49

标签: java orm configuration hsqldb openjpa

我(still)有很多问题与HSQLdb& OpenJPA的。

Exception in thread "main" <openjpa-1.2.0-r422266:683325 fatal store error> org.apache.openjpa.persistence.RollbackException: user lacks privilege or object not found: OPENJPA_SEQUENCE_TABLE {SELECT SEQUENCE_VALUE FROM PUBLIC.OPENJPA_SEQUENCE_TABLE WHERE ID = ?} [code=-5501, state=42501]
    at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:523)
    at model_layer.EntityManagerHelper.commit(EntityManagerHelper.java:46)
    at HSQLdb_mvn_openJPA_autoTables.App.main(App.java:23)

HSQLdb作为服务器进程运行,绑定到本地计算机上的端口9001。用户是SA。配置如下:

<persistence-unit name="HSQLdb_mvn_openJPA_autoTablesPU"
        transaction-type="RESOURCE_LOCAL">
        <provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>
        <class>model_layer.Testobjekt</class>
        <class>model_layer.AbstractTestobjekt</class>
        <properties>
            <property name="openjpa.ConnectionUserName" value="SA" />
            <property name="openjpa.ConnectionPassword" value=""/>

            <property name="openjpa.ConnectionDriverName"
                value="org.hsqldb.jdbc.JDBCDriver" />
            <property name="openjpa.ConnectionURL"
                value="jdbc:hsqldb:hsql://localhost:9001/mydb" />

            <!-- 
            <property name="openjpa.jdbc.SynchronizeMappings"
                value="buildSchema(ForeignKeys=true)" />
                 -->
        </properties>
    </persistence-unit>

我已成功连接我的ORM图层。我可以创建并连接到我的EntityManager。

然而,每次我使用

EntityManagerHelper.commit();

它失败了,这对我来说毫无意义。 SA是我用来创建表的标准管理员用户。它应该能够作为此用户持久保存到hsqldb。

编辑:经过数小时的调试后,我发现了为什么会失败。如果未设置必需的表条目(NOT NULL),也会出现此类错误消息。它没有表明对我来说。由于缺少权限问题条目,OpenJPA层似乎无法插入语句。因此,我只是接受了第一个答案。感谢您阅读:)

1 个答案:

答案 0 :(得分:1)

我感到压力很大,HSQL无权在配置目录中写入数据文件。

当我以root / Administrator手动测试我的服务器并且当它作为守护进程/服务启动时,它会发生在我身上,它会更改为权限较低的用户。然后,当服务器正在运行时,文件由另一个用户拥有。

这可能是其他原因:在Windows上,当另一个进程(另一个服务器实例)仍然依赖于文件时,或者甚至当eclipse以其无限的智慧决定索引数据库时,我就拥有它。