@Embeddable
class Item{
String value
}
class R{
@...
Map<Integer, Item> values;
}
В базе есть список из R, у каждого есть Embeddable коллекция с целочисленным ключем, вот и по нему нужно удалить все пункты из Map. Как это сделать более эффективно?
Самый быстрый конечно, это выполнить нативный запрос, но это будет "отдаление" от Hibernate и т.д. и т.п.
Работающий, но ужасный метод
List<R> r = JPA.em().createQuery("from R").getResultList();
for (R resp : r) {
resp.values.remove(f.getId());
JPA.em().persist(resp);
}
Быстро и эффективно, но минимум внимания к Hibernate
Query qRemove = JPA.em().createNativeQuery("delete from r_values where val_id = :id");
qRemove.setParameter("id", f.getId());
qRemove.executeUpdate();