Код: Выделить всё
public class Event {
String id;
String zipCode;
String locationCode;
String eventName;
String eventDesc;
}
Код: Выделить всё
// getEventsToAdd method returns the list of events to be added for the zipCode 1234
// getEventsFromTheDB method returns all the events in the db with the zipCode 1234
List eventsToAdd = getEventsToAdd("1234");
List oldEvents = getEventsFromTheDB("1234");
for (Event e : oldEvents) {
entityManager.remove(e);
}
for (Event e : eventsToAdd) {
entityManager.persist(e);
}
entityManager.flush();
// ...
Однако, если в oldEvents есть некоторые объекты событий, которые имеют другой идентификатор, т. е. не совпадают с идентификатором любой объект в списке eventToAdd, то выдается исключение
Код: Выделить всё
Duplicate Entry found for key UK_zipCode_locationCode
Однако, если я вызовуentityManager.flush() после удаления старых событий, это сработает -
Код: Выделить всё
// This works!
for (Event e : oldEvents) {
entityManager.remove(customizedProviderAttribute);
}
// flush after removing all the old events
entityManager.flush();
for (Event e : eventsToAdd) {
entityManager.persist(e);
}
Подробнее здесь: https://stackoverflow.com/questions/720 ... er-persist