У меня есть класс сущности с около 70 столбцами. Таблица может иметь около 200 000 строк. Я хочу обновить только один из столбцов для всех 200 000 записей.
Обычно я получаю все сущности и для каждого обновляю сущность новым значением для поля и сохраняю его.
HQL будет выглядеть примерно так: select p from Person p
. Это позволяет нам писать Java код, такой как: entity.PhoneNumber = new_value; session.flush();
. Проблема в том, что SELECT извлекает ВСЕ 70 столбцов, когда требуется только 2 (первичный ключ и поле, которое нужно изменить).
Мы можем написать HQL следующим образом: select p.Id, p.PhoneNumber from Person p
. К сожалению, теперь мы больше не получаем сущности, поэтому сейчас, вместо того, чтобы программировать объектно-ориентированным способом, мы теперь застряли с написанием HQL: update Person set p.PhoneNumber = ? where Id = ?
.
Есть ли способ загрузить ЧАСТИЧНУЮ сущность (загрузить объект только с некоторыми заполненными полями, а затем использовать этот объект для внесения изменений и затем сохранить его?