2016-07-01 38 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文件中添加以下行之后,它现在工作正常

相关问题