我是(still),它具有OpenCL的HSQLdb &问题。关于OpenJPA的HSQLdb权限
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层的错误不能插入语句,因为缺少权限问题的条目。因此,我只是接受了第一个答案。感谢阅读:)
我将Linux机器上的文件权限更改为777,并将其作为Java和Eclipse的用户运行 - 同样的错误。不能是文件许可问题。 – wishi 2010-06-01 17:28:56
也许它找错了地方。 HSQL将定期写入其db文件。您可能会检查数据库数据目录中的文件是否存在,以及它们是否具有最近的修改时间戳。如果不是这样,那么从相对路径开始的问题可能会从不同的应用程序根目录开始。 – 2010-06-01 18:00:50