私はC/S Javaプロジェクトに取り組んでおり、Eclipselinkを使ってORM(クライアントサイドキャッシュデータベース、derby)を実行しようとしています。 例&の式でクエリを実行するのは簡単ですが、挿入/更新に関しては、Entity Managerを使用する必要があります(Java ORMでかなり新しい、別の方法があるかもしれません)。 emを作成しようとすると、サーバセッションが必要である(つまり、名前で永続ユニットを見つけることができない)ということを示す例外が常にスローされます。 セッションBean @PersistenceUnitアノテーション&を使用すると、Nullが返されます。Eclipselink Entity Managerの入手方法は?
私はいくつかの愚かな間違いをしましたか?または、値を更新/挿入する簡単な方法はありますか? Session.save(Object)やこのようなことを簡単にするようなものがあるかもしれないと思います。
EDIT:UnitOfWorkを使用しようとしましたが、マップファイルやEclipselinkがID PKを認識させるようなものを変更する必要があります。
@GeneratedValue(戦略= GenerationType.IDENTITYを)
POJOにこの行を追加します動作しません。
EDIT:私はここに値を挿入する作業の使用単位を試してみたが、コード
SessionFactory sessionFactory = new SessionFactory("default");
Session session = sessionFactory.getSharedSession();
UnitOfWork uow = session.acquireUnitOfWork();
SysUser usr2 = new SysUser();
usr2.setUserName("test");
usr2.setUserPassword("test");
uow.registerObject(usr2);
uow.commit();
だ。しかし、それはここ
Internal Exception: java.sql.SQLSyntaxErrorException: Attempt to modify an identity column 'DB_ID'.
になり、私が使用した注釈です:
@Column(name = "DB_ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
protected int dbId;
EntityManagerの場合:
<persistence-unit name="my-app-name">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:/app/jdbc/jdbc/ConnectionDerbyDS</jta-data-source>
'javax.persistence.PersistenceException:org.eclipse.persistence.jpa.PersistenceProviderという名前のプロバイダで予期しない例外がスローされました:EntityManagerのための持続性なしプロバイダは、私のアプリ名が命名しましたEntityManagerFactoryを作成してください: org.eclipse.persistence.exceptions.PersistenceUnitLoadingException' – MikeZTM
@MikeZTMあなたのクラスパスに必要なすべてのライブラリがありますか? – Jesper
また、Java SEアプリケーションの 'persistence.xml'に' jta-data-source'を使用しないでください。JDBC接続パラメータを指定してください([example](http://wiki.eclipse.org/ EclipseLink/Examples/JPA/OutsideContainer)を参照してください)。 – Jesper