Opción de estilo de base de datos
Hibernate no ofrece agregar una opción a su insert into
declaraciones. Y no sé si la misma opción está disponible para MS SQL.
Pero si encuentra esa opción, puede interceptar la declaración de inserción y agregarla usted mismo:
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;
}
}
Debe declarar este interceptor en su persistence.xml
:
<property name="hibernate.ejb.interceptor" value="...IgnoreRowOnDupInterceptor" />
Opción de estilo JPA
Puede recordar la última línea del último análisis (o recuperarla de la base de datos) y omitir el archivo hasta esa línea. En ese caso, incluso ahorraría tiempo para analizar cada elemento existente una y otra vez.
Desde mi punto de vista, esta es la forma JPA, porque generalmente usa la base de datos solo como almacenamiento y mantiene la lógica comercial en la aplicación (Java).