Field[] f = new Field[] {new Field("code", codes2update, Field.OPERATOR_IN)};
//выберем уже лежащие в базе сущности
Iterator it = findEntityList(AddressObjectType.class, f).iterator();
//и загоним их в мап
while (it.hasNext()) {
AddressObjectType type = (AddressObjectType)it.next();
entitys2Update.put(type.getCode(), type);
}
//теперь добавляем сущности в базу (существующие обновим взяв из мапа)
for (AddressObjectTypeDetails d : types) {
AddressObjectType type = entitys2Update.get(d.code);
if (type == null){
type = new AddressObjectType();
type.setAbbrivation(d.abbrivation);
type.setCode(d.code);
type.setLevel(d.level);
type.setTitle(d.title);
manager.persist(type);
}else{
type.setAbbrivation(d.abbrivation);
type.setCode(d.code);
type.setLevel(d.level);
type.setTitle(d.title);
manager.merge(type);
}
}
manager.flush();
}