powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление из коллекции в Hibernate
25 сообщений из 52, страница 2 из 3
Удаление из коллекции в Hibernate
    #39231762
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяJulT,
я начну опять флудить, эти лишние строки...
твой выбор....
а пррсто делается через jdbc простым delete
Действительно.. зачем вообще этот хибернейт сдался, когда есть jdbc? да? кстати, простым делетом ты строку с фк так же не удалишь. Упс.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231767
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTвадяJulT,
я начну опять флудить, эти лишние строки...
твой выбор....
а пррсто делается через jdbc простым delete
Действительно.. зачем вообще этот хибернейт сдался, когда есть jdbc? да? кстати, простым делетом ты строку с фк так же не удалишь. Упс.
а вот это ещё раз подтверждает что надо исходить от данных, их зависимостей, а уж потом использовать прокладки.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231770
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадявот это и создаёт проблемы конечному юзеру пофигу коллекции
записал. вадя против коллекций в Java. И сам их не использует.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231771
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа вот это ещё раз подтверждает что надо исходить от данных, их зависимостей, а уж потом использовать прокладки.
Это ещё раз подтверждает что надо предавать анафеме тех кто заикнется про JDBC. Ну, нет ничего простого и ничего хорошего в использовании этого API для бизнес-сущностей.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231772
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTлибо включить каскадинг (и быть готовым к тому, что удалив одну сущность из базы пропадет еще 500)
какскад включен. Если удалить клиента, то удалятся все его паспорта. Всё логично.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231781
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вернуться к первому посту ТС, то видно не понимание структуры того что требует/хочется...
вот правильные скрипты для создания этих двух таблиц
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TABLE tst.pasport (
  id int(11) NOT NULL AUTO_INCREMENT,
  id_client int(11) NOT NULL,
  number varchar(255) DEFAULT NULL,
  PRIMARY KEY (id),
  INDEX UK_pasport_id_client (id_client),
  CONSTRAINT FK_pasport_client_id FOREIGN KEY (id_client)
  REFERENCES tst.client (id) ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = INNODB
AUTO_INCREMENT = 5
AVG_ROW_LENGTH = 8192
CHARACTER SET utf8
COLLATE utf8_general_ci;


CREATE TABLE tst.client (
  id int(11) NOT NULL AUTO_INCREMENT,
  client_name varchar(50) DEFAULT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 2
CHARACTER SET utf8
COLLATE utf8_general_ci;

...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231806
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTлибо включить каскадинг (и быть готовым к тому, что удалив одну сущность из базы пропадет еще 500)
какскад включен. Если удалить клиента, то удалятся все его паспорта. Всё логично.
логично с точки зрения каскадинга.
Может я хочу хранить базу паспортов? Впрочем, это скорее вопрос того, что надо в конкретном случае.
На SO вообще через одного рекомендуют отказаться от каскадинга.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231808
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Тема про коллекции Java.
Про скрипты и структуру БД было тут
Hibernate запросы
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231809
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTМожет я хочу хранить базу паспортов? Впрочем, это скорее вопрос того, что надо в конкретном случае.
Да. Я исходил из здравого смысла по умолчанию.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231812
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
Тема про коллекции Java.
Про скрипты и структуру БД было тут
Hibernate запросы
а я предупредил про флуд
просто лишний раз предупредил о вредности прокладок :)
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231813
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTМожет я хочу хранить базу паспортов? Впрочем, это скорее вопрос того, что надо в конкретном случае.
Да. Я исходил из здравого смысла по умолчанию.
да ладно. Есть товар, есть события отгрузки этого товара. Их много. Ты удаляешь одно событие - удаляется весь товар?
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231816
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTPetro123пропущено...

Да. Я исходил из здравого смысла по умолчанию.
да ладно. Есть товар, есть события отгрузки этого товара. Их много. Ты удаляешь одно событие - удаляется весь товар?
данное свойство должно быть прописано в тз. если заказчик не хочет - не заставишь. какими бы аргументами не крыл его хотелки.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231818
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
ты первый раз какскад встретил?
Он работает (устанавливается) только для чилдрен и один ко многим.
К FK он НЕ ПРИМЕНЯЕТСЯ.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231820
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTНа SO вообще через одного рекомендуют отказаться от каскадинга.
Ох уж эти максималисты.
То убрать, это запретить...
Каскад выкинуть, хибер сжечь, автоинкремент руками предать анафеме, кнопку назад в браузере запретить...
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231936
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaT,
ты первый раз какскад встретил?
Он работает (устанавливается) только для чилдрен и один ко многим.
К FK он НЕ ПРИМЕНЯЕТСЯ.
причем тут фк в контексте хибера и объектной модели? не. т.е. конечно же причем. Но это не главная суть. Суть в том, что если есть связь, то без каскадинга просто так объект не удалить. А если есть каскадинг то можно поудалять случайно вообще полбазы. Или всю целиком. Т.е. ты можешь сказать "а ты бездумно не использую каскадинг" и будешь прав. Но... Мое скромное мнение, что каскадинг это не главная фича хибера, и более того - вредная.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231947
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
это неинтересно))
Есть опция:
cascade = CascadeType.ALL
хошь пиши, хошь не пиши. Твоё дело.
Сабжу это монопесуально. Удачи!
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231981
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123JulT- не работает, вычитала где-то что нужно удалять через родительскую сущность, переписала следующим образом:
у вас один ко многим. Т.е. много паспортов у клиентов.
Логично, что удалять паспорт нужно у конкретного клиента.
Т.е. это общий смысл действий.
Т.е. мое решение правильное?
Честно говоря столько всего понаписывали, что черт голову сломит)). Одни про каскад, хотя он есть(cascade = CascadeType.ALL - или это не оно?), другие про неправильную структуру таблиц, другие про jdbc....
А может кто-то просто взять и привести правильный по всем канонам пример, и в двух словах рассказать почему так, а не иначе?:)
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231982
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulT,
Совершенно не обязательно вычитывать passport чтобы удалить. Достаточно пустого объекта с заполненным ID. Для того чтобы не трогать клиента достаточно настроить каскады. Даже метод save вызывать не обязательно.

Вопросы. Что именно не работало при простом удалении? Приведённый код имеет смысл когда нужно разорвать Ассоциацию, а не удалить сущность.

Ну, и как обычно. У вас была проблема, вы написали костыль и теперь спрашиваете про костыль, а не саму проблему.
Passport passport = passportRepository.findOne(passportId); - вот при таком простом удалении строка в бд остается. Почему при таком подходе не удаляется сущность? Где костыль, ткните в строчку с костылем плиз). Покажите пример вашего onetomany и пример как вы удаляете(редактируете). Спасибо!
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231998
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT
Код: java
1.
passportRepository.delete(passport);


откуда взялся паспорт?
- в веб транзакции короткие. От сессии отсоединять объекты крайне нежелательно.
Т.е. у вас вверху при получении паспорта как раз должен быть их родитель)).
Сделайте полный пример, после выхов кто нить проверит.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39232030
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,
посмотри на то как организованы связи в моём примере. у тебя совершенно наоборот.
у тебя каскадное удаление прописано для клиента, а надо для паспорта.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39232040
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,

вот тут 19149617
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39232284
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяJulT,
посмотри на то как организованы связи в моём примере. у тебя совершенно наоборот.
у тебя каскадное удаление прописано для клиента, а надо для паспорта.Утверждение неверное. В хибере каскады описываются не так, как в базе, документация в помощь.

JulT, что касается примера, то можно, в конце концов, использовать и hql
Код: java
1.
2.
3.
4.
session
.createQuery("delete from Passport where id=:id")
.setParameter("id", id)
.executeUpdate();


При этом нет необходимости тянуть сущности из базы.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39232316
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторJulT, что касается примера, то можно, в конце концов, использовать и hql

session
.createQuery("delete from Passport where id=:id")
.setParameter("id", id)
.executeUpdate();


При этом нет необходимости тянуть сущности из базы.
и сам хибер не нужен :)
jdbc выше крыши
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39232320
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи сам хибер не нужен :)
jdbc выше крыши
Наивное заблуждение.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39232324
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи сам хибер не нужен :)
ты же его не знаешь)
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление из коллекции в Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]