Databasstilsalternativ
Hibernate erbjuder inte att lägga till ett alternativ till dess insert into
uttalanden. Och jag vet inte om samma alternativ är tillgängligt för MS SQL.
Men om du hittar ett sådant alternativ kan du avlyssna insert-satsen och lägga till det själv:
public class IgnoreRowOnDupInterceptor extends EmptyInterceptor {
public String onPrepareStatement(String sql) {
if (sql.startsWith("insert into avaya_cm_cdr") {
return sql.replace("insert into",
"insert /*+ ignore_row_on_dupkey_index(avaya_cm_cdr, i_avaya_cm_cdr_nodub) */ into");
}
return sql;
}
}
Du måste deklarera denna interceptor i din persistence.xml
:
<property name="hibernate.ejb.interceptor" value="...IgnoreRowOnDupInterceptor" />
JPA-stilalternativ
Du kan komma ihåg den sista raden från den senaste analysen (eller hämta den från databasen) och hoppa över filen till den raden. I så fall skulle du till och med spara tid för att analysera alla befintliga objekt om och om igen.
Ur min synvinkel är detta JPA-sättet, eftersom du vanligtvis bara använder databasen som lagring och behåller affärslogiken i (Java)-applikationen.