1

JPAを使用して、Eclipseリンクを使用してDerby DBにデータを追加し、IDが重複している場合。

エラーが発生しました。実行時に(コードを使用して)すべてのテーブルエントリを単純に削除する方法があります。

プログラムを呼び出すたびに、古いエントリは必要ありません。新しいエントリだけが必要です。

で試してみました

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager entityManager = factory.createEntityManager();

entityManager.getTransaction().begin();

Query query = entityManager.createQuery("SELECT p FROM Job p ");

List resultList = query.getResultList();

for (Object result : resultList) {
    entityManager.remove(result);
}

entityManager.getTransaction().commit();
entityManager.close();

しかし、ここでは以前にクエリを使用しましたが、すべてのエントリを削除したいので、以前に何があったかは気にしません。

4

2 に答える 2

1

アプリケーションが起動するたびに、実行時にSQLDELETEクエリを使用できます。コードを投稿しないと、私たちはお手伝いできません。

編集 :

以前のトランザクションまたはクエリ前の同じトランザクションで、次のようにクエリを実行できます。

int deletedCount = entityManager.createQuery("DELETE FROM Job").executeUpdate();
于 2013-01-23T13:51:10.990 に答える
1

削除クエリを実行するか、永続ユニットがデプロイされたときにテーブルを再作成するように永続ユニットを構成することができます。

http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/p_ddl_generation.htm#BABHEJJIを参照して ください。

于 2013-01-23T14:29:53.390 に答える