Опция за стил на базата данни
Hibernate не предлага добавяне на опция към своя insert into
изявления. И не знам дали същата опция е налична за MS SQL.
Но ако намерите такава опция, можете да прихванете израза за вмъкване и да го добавите сами:
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;
}
}
Трябва да декларирате този прехващач във вашия persistence.xml
:
<property name="hibernate.ejb.interceptor" value="...IgnoreRowOnDupInterceptor" />
Опция за стил JPA
Можете да запомните последния ред от последния синтактичен анализ (или да го извлечете от базата данни) и да пропуснете файла до този ред. В този случай дори ще спестите време за анализиране на всеки съществуващ елемент отново и отново.
От моя гледна точка това е JPA начинът, защото обикновено използвате базата данни само като хранилище и запазвате бизнес логиката в (Java) приложението.