Как опубликовано вами в комментариях - Если какая-либо сущность удалена / отредактирована / добавлена в пользовательском интерфейсе, я удаляю все связанные сущности, а затем воссоздаю те, которые исходят из пользовательского интерфейса ...
Ведение двух списков, один для сущностей в базе данных и другой для пользовательского интерфейса.
//---
dbEntries.removeAll(uiEntries); // dbEntries will have entities to be deleted
for(Education edu : dbEntries){
em.remove(edu); // Deleting entries not found in UI
}
for(Education edu : uiEntries){
em.merge(edu); // Updating existing entity else persisting new one
}
//---
Таким образом, вы можете достичь того, что пытаетесь до сих пор, укажите, если я ошибся.
Иначе в вашем коде, попробуйте объединить tempEdu перед удалением edu.