Opcja stylu bazy danych
Hibernate nie oferuje dodawania opcji do jego insert into
sprawozdania. I nie wiem, czy ta sama opcja jest dostępna dla MS SQL.
Ale jeśli znajdziesz taką opcję, możesz przechwycić instrukcję INSERT i dodać ją samodzielnie:
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;
}
}
Musisz zadeklarować ten przechwytywacz w swoim persistence.xml
:
<property name="hibernate.ejb.interceptor" value="...IgnoreRowOnDupInterceptor" />
Opcja stylu JPA
Możesz zapamiętać ostatnią linię z ostatniego parsowania (lub pobrać ją z bazy danych) i pominąć plik do tej linii. W takim przypadku zaoszczędzisz nawet czas na ponowne parsowanie każdego istniejącego elementu.
Z mojego punktu widzenia jest to sposób JPA, ponieważ zwykle używasz bazy danych tylko jako magazynu i zachowujesz logikę biznesową w aplikacji (Java).