Ich habe einige Klasse AnrufeWie in Oracle ohne doppelte Zeilen mit Hibernate einzufügen?
public class Calls {
private String Field1;
//and many fields, for example 15
private List<MyModel> models;
}
Jede Minute, die ich ein List of Calls
List<Calls> list = someService.getCallsList();
bekommen und versuchen, es in DB einfügen
Session session = getSession();
Transaction tx = session.beginTransaction();
for(int i=0; i< list.size(); i++) {
Calls calls = list.get(i);
session.createSQLQuery(
"INSERT /*+ ignore_row_on_dupkey_index(CALLS,UNIQUE_CALLS_CONSTRAINT) */ " +
"INTO CALLS(Field1,....,FieldEnd) VALUES(:field1,...,:fieldEnd)")
.setParameter("field1",calls.getField1()
//set all params
.setParameter("fielEnd1",calls.getFieldEnd();
if (i % 20 == 0) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
}
Ich brauche Reihe zu setzen und doppelte überspringen : /*+ ignore_row_on_dupkey_index(CALLS,UNIQUE_CALLS_CONSTRAINT) */
/Dafür verwende ich SQLQuery
Meine Frage ist: Wie kann ich dies mit Hibernate ohne SQLQuery
machen? wie im Allgemeinen korrekt implementiert ist. I 15 Parameter haben, und ich will sie nicht alle registrieren für SQLQuery
Ich verstehe Sie wollen Deduplizierung Anrufe Objekt. Ist das eine Möglichkeit, dass Duplikate durch eine Struktur wie Set entfernt werden und diese dann für eine Iteration als eine Liste verwenden? Ist das was du brauchst? –
@Ramachandran G Ein bisschen anders. Liste, die ich jede Minute bekomme, kann Objekte enthalten, die sich bereits in der Datenbank befinden – user5620472
Haben Sie bewertet, ob saveOrUpdate() Ihnen bei den Duplikaten helfen wird? –