2016-07-01 41 views
1

我正在嘗試爲練習原因開發應用程序。我使用MSAccess 2010作爲數據庫,UCanAccess(3.06)作爲驅動程序,EclipseLink 2.1作爲實體框架。使用EclipseLink和UCanAccess進行持久性時的錯誤

我被困在添加新的記錄到數據庫。這裏的錯誤代碼:

Internal Exception: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 user lacks privilege or object not found: IDENTITY_VAL_LOCAL 
Error Code: -5501 
Call: SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1 
Query: ValueReadQuery(name="SEQ_GEN_IDENTITY" sql="SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1") 

在我看來,ID的自動生成失敗。生成實體類爭奪Netbeans和看起來像這樣:

@Transient 
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this); 

private static final long serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "ID") 
private Integer id; 

回答

0

默認情況下,的EclipseLink嘗試自動檢測基礎數據庫,並生成使用適當的SQL方言的SQL語句。這顯然不適合你,因爲檢索最後創建的標識值的SQL語句無法被UCanAccess識別。

您可以嘗試向指定SQLServer的EclipseLink配置添加target-database指令,試圖使工作SQL語句(SELECT @@IDENTITY)檢索最後創建的ID值。但是,請記住T-SQL和Access SQL之間存在顯着差異,因此您可能會繼續遇到EclipseLink和UCanAccess之間的其他兼容性問題。

0

知道上面的回答之前,我也面臨着同樣的問題,在Access數據庫中插入新的記錄, 感謝戈德湯普森先生給予了極大的解決方案對我來說, ,它是工作壓力太大。

我剛纔說在我的persistence.xml文件中的一行..

屬性名= 「eclipselink.target數據庫」 VALUE = 「HSQL」

<?xml version="1.0" encoding="UTF-8"?> 
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
     <persistence-unit name="OnePU" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>design_frames.One</class> 
     <properties> 
      <property name="javax.persistence.jdbc.url" value="jdbc:ucanaccess://C:\One\One.accdb"/> 
      <property name="javax.persistence.jdbc.user" value=""/> 
      <property name="javax.persistence.jdbc.driver" value="net.ucanaccess.jdbc.UcanaccessDriver"/> 
      <property name="javax.persistence.jdbc.password" value=""/> 
      <property name="eclipselink.target-database" value="HSQL"/> 
     </properties> 
     </persistence-unit> 
    </persistence> 
+0

歡迎SO。你爲什麼添加這條線? –

+0

我正在面對錯誤「調用:SELECT IDENTITY_VAL_LOCAL()FROM SYSIBM.SYSDUMMY1」 每當我想嘗試添加新的記錄在Microsoft Access數據庫 與Java持久性API(jpa)插入不成功。 在persistence.xml文件中添加以下行之後,它現在工作正常

相關問題