Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Hibernate: удаление списка объектов |
Автор: danik 23.7.2007, 16:08 |
Необходимо, используя Hibernate + Spring, удалить из базы список объектов (список формируется из отмеченных пользователем на странице строк). Каким образом можно удалить одним запросом? deleteAll(List) не в счёт. |
Автор: necromancer 23.7.2007, 16:27 |
createQuery("delete form.... where ...").execute(); |
Автор: danik 24.7.2007, 17:55 |
Каким образом Вашим способом можно решить мою проблему я не понимаю: а если нужно удалить около сотни объектов из базы, каким макаром сформировать строку запроса? |
Автор: necromancer 24.7.2007, 18:04 |
разных объектов не связаных одним свойством? никак. Тогда удаляем по одному. А что бывают другие варианты? хотя бы в том же простом jdbc? Если таковые варианты и есть то они в итоге будут иметь вид: delete from ... where id=... or id=... or id=.. and etc или если упрость =) delete from ... where id IN (...,...,...,... and etc) |
Автор: danik 25.7.2007, 02:39 | ||
Отчего же? вышеупомянутый deleteAll(List) (спринговый) позволяет удалить список объектов с проинициализированными id. Мне нужен просто некий аналогичный метод\подход. Такая уж задача поставлена. В JDBC конечно ничего подобного нету. Общих свойств у объектов тоже нету. Они абсолютно произвольные, выбранные пользователем. Идея с одним запросом на каждый объект недопустима. |
Автор: danik 25.7.2007, 16:29 | ||
Ну что ж, сделаем так. Получилось что-то вроде этого:
где newsID - Long[] с айдишниками. В результате hibernate сформировал запрос, который предлагал necromancer и AlexeyVorotnikov (delete from table where id in (id1, id2, ....)). Этот способ стократ круче, т. к. используя deleteAll(Collection) количество сгенерированных запросов равняется количеству удаляемых объектов = / Всем спасибо и низкий поклон ![]() |