我是(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