2016-07-01 22 views
1

私は運動の理由からアプリケーションを開発しようとしています。私はドライバとしてUCanAccess(3.06)、エンティティフレームワークとしてEclipseLink 2.1を使用してデータベースとしてMSAccess 2010を使用しています。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文を生成しようとします。最後に作成されたID値を取得するSQL文がUCanAccessによって認識されないため、明らかに機能しません。

最後に作成されたID値を取得するために、動作中のSQL文(SELECT @@IDENTITY)を取得しようとして、SQLServerを指定して、ディレクティブをEclipseLink構成に追加することができます。ただし、T-SQLとAccess SQLの間には大きな違いがあるため、EclipseLinkとUCanAccessの間に他の互換性の問題が引き続き発生する可能性があることに注意してください。

0

答え上知り前に、私はまた、私のため を偉大なソリューションを提供するために、Accessデータベースに氏ゴードトンプソンへ おかげで新しいレコードを挿入するための同じ問題に直面していたし、それがあまりにも取り組んでいます。私はちょうど私のpersistence.xmlファイル内の1行を追加した

..

プロパティ名= "eclipselink.target-データベース" 値= "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

私はMicrosoftのアクセスデータベース に新しいレコードを追加しようとすると、いつでもエラー "Call:SELECT IDENTITY_VAL_LOCAL()FROM SYSIBM.SYSDUMMY1" に直面していましたが、Java永続API(jpa)の挿入が成功しませんでした。 これは、 –

関連する問題