以下のコードを使用して、レコードをデータベースに挿入しています。
EntityManagerFactory emf = getEmf();
em = emf.createEntityManager();
//Get the Transaction
EntityTransaction trx = em.getTransaction();
trx.begin();
for ( int i=0;i<10000;i++) {
//Create new Object and persist
Customer customer = new Customer(.....);
em.persist(customer);
//Once its reach the 1000 size do commit
if ( i % 1000 == 0 ) {
em.flush();
em.clear();
trx.commit();
}
}
em.close();
新しい Customer オブジェクトのように、データベースに重複する値がない場合、上記のコードは正常に機能しています。データベースに Customer の値が重複している場合、「SQLIntegrityConstraintViolationException」が発生します。
ここでは、persist () を使用して、パフォーマンスの問題のためにレコードをデータベースに挿入しています。マージ()を使用すると、正常に機能します。しかし、タスクを完了するにはもっと時間が必要です。
persist() の場合、どれが重複レコードであるかを特定する (つまり、重複レコード情報を取得する) オプションはありますか?
DB に複数の重複レコードが存在する場合、どれが重複レコードであるかを特定するオプションはありますか?