powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление из коллекции в Hibernate
25 сообщений из 52, страница 1 из 3
Удаление из коллекции в Hibernate
    #39231347
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сущность Client, в ней:
Код: java
1.
2.
3.
@OneToMany(mappedBy = "client", cascade = CascadeType.ALL, orphanRemoval=true)
    @Fetch(value = FetchMode.JOIN)
    private List<Passport> passports = new ArrayList<>();


В Passport:
Код: java
1.
2.
3.
4.
@JsonIgnore
    @ManyToOne
    @JoinColumn(name = "client_id", nullable = false)
    private Client client;


Хочу удалить паспорт, попыталась сделать так:
Код: java
1.
passportRepository.delete(passport);

- не работает, вычитала где-то что нужно удалять через родительскую сущность, переписала следующим образом:
Код: java
1.
2.
3.
4.
5.
6.
public void deletePassport(long passportId) {
        Passport passport = passportRepository.findOne(passportId);
        Client client = passport.getClient();
        client.getPassports().remove(passport);
        clientRepository.save(client);
    }


удаляет, все отлично, но, мне оооочень не нравится, что в данном случае пришлось написать кучу строчек кода вместо одной.
как правильно удалять запись? может просто взять и сделать что-то типа:
@Query("delete from ...")
спасибо!
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231427
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,
я начну опять флудить, эти лишние строки...
твой выбор....
а пррсто делается через jdbc простым delete
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231467
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,
Совершенно не обязательно вычитывать passport чтобы удалить. Достаточно пустого объекта с заполненным ID. Для того чтобы не трогать клиента достаточно настроить каскады. Даже метод save вызывать не обязательно.

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

Ну, и как обычно. У вас была проблема, вы написали костыль и теперь спрашиваете про костыль, а не саму проблему.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231468
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяJulT,
я начну опять флудить, эти лишние строки...
твой выбор....
а пррсто делается через jdbc простым delete
Кеширование в слое работы с БД? Не, не слышал.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231474
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
кэширование не оправдывает, в данном случае, наличие кучи лишнего кода.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231492
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Может хотя бы JPQL заюзать ?
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231497
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
а смысл?
что неужели трудно освоить sql?
и использовать все возможности базы, будет намного быстрее
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231503
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа смысл?в том, что топик про Hibernate
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231525
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmanвадяа смысл?в том, что топик про Hibernate
я предупредил про флуд...
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231546
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczвадяJulT,
я начну опять флудить, эти лишние строки...
твой выбор....
а пррсто делается через jdbc простым delete
Кеширование в слое работы с БД? Не, не слышал.

не работает в кластере
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231598
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,

С фига ли? Репликацию кэша тоже уже отменили?
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231649
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT- не работает, вычитала где-то что нужно удалять через родительскую сущность, переписала следующим образом:
у вас один ко многим. Т.е. много паспортов у клиентов.
Логично, что удалять паспорт нужно у конкретного клиента.
Т.е. это общий смысл действий.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231652
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPenkov Vladimir,

С фига ли? Репликацию кэша тоже уже отменили?

это только если весь кластер на хибере сидит
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231683
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123JulT- не работает, вычитала где-то что нужно удалять через родительскую сущность, переписала следующим образом:
у вас один ко многим. Т.е. много паспортов у клиентов.
Логично, что удалять паспорт нужно у конкретного клиента.
Т.е. это общий смысл действий.
если у одного клиента много паспортов , а нужно удалить паспорт , по id паспорта, то удаляется только паспорт, к клиенту это никакого отношения не имеет.
эта проблема возникла из-за не правильного построения базы, начали с каких-то сучностей, а не взаимосвязей таблиц
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231691
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirэто только если весь кластер на хибере сидит
Больше нелепых оправданий. Это теперь PHP админка кластером называется? Кластером, обычно, называют гомогенную систему однотипных серверов. Гетерогенные кластеры достаточно большая редкость.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231697
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPenkov Vladimirэто только если весь кластер на хибере сидит
Больше нелепых оправданий. Это теперь PHP админка кластером называется? Кластером, обычно, называют гомогенную систему однотипных серверов. Гетерогенные кластеры достаточно большая редкость.
что ты несешь?

нода веб + нода гейтвей на хибере для создания банеров, кампаний, модерации и прочего.
12 нод ротатора под нагрузкой, вычитывающих стейт ротации с помощью jdbcTemplate.

или вы там все сайтики клепаете? тогда да, хибер и прочее гавно для вас. спринг бут еще вспомните
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231698
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесли у одного клиента много паспортов , а нужно удалить паспорт , по id паспорта, то удаляется только паспорт, к клиенту это никакого отношения не имеет.
эта проблема возникла из-за не правильного построения базы, начали с каких-то сучностей, а не взаимосвязей таблиц
В ООП и ОРМ нет Id паспорта. Т.к. нет объекта СУБД, чтобы сделать так:
СУБД.УдалитьПаспорт(12345).
Это ООП.
Правильная или нет структура я не знаю. В топике её нет.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231700
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
2. ОРМ как понятие - шире.
А PK - первичный ключ.
Его может и не быть вообще.
Т.е. в бизнес коде БЛ не должно быть строчек с первичным ...в реляционной СУБД.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231711
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
2. ОРМ как понятие - шире.
А PK - первичный ключ.
Его может и не быть вообще.
Т.е. в бизнес коде БЛ не должно быть строчек с первичным ...в реляционной СУБД.
вот и проблемы от такого подхода.
сначала напридуываем всякой ерунды, а потом с ней боремся.
твои слова ещё один аргумент против хибера.
по уму, проблемы тс в принципе не существует, а тут столько из-за каких-то модных прокладок.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
ты просто не можешь понять, что пишущий БЛ программист не должен знать ID.
Может тебе пример кода привести?
Тебе не понятно, что коду записи неоткуда взяться на клиенте?
Второй запрос делать?
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231730
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпо уму, проблемы тс в принципе не существует, а тут столько из-за каких-то модных прокладок.
я тоже как ты, был против хибера в самом начале.
Но, увы - нельзя всё в Java называть прокладками.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231747
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
ты просто не можешь понять, что пишущий БЛ программист не должен знать ID.
Может тебе пример кода привести?
Тебе не понятно, что коду записи неоткуда взяться на клиенте?
Второй запрос делать?
не надо так утрировать -
если у тебя есть на клиенте таблица - то для нормальной работы необходимо как-то идентифицировать каждую запись данных отображаемых юзеру.
юзер не обязан об этом знать.
в веб , к примеру, этот id можно зашить в атрибуте data-id тэга tr.
этого достаточно для удаления записи по id.
есть "выделенная строка", есть кнопка удалить.
жмякаеш на кнопку, код читает из data-id "выделенной строки" id этой записи, передаёт этот код на сервер, где и происходит удаление записи по id. программист и не знает этого id.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231754
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесли у тебя есть на клиенте таблица - то для нормальной работы необходимо как-то идентифицировать каждую запись данных отображаемых юзеру.
ещё раз. Тема про ОРМ и ООП. Нет ни каких таблиц на АппСервере. Есть коллекции. Термин знаком? Или тоже прокладка?
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231758
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяесли у тебя есть на клиенте таблица - то для нормальной работы необходимо как-то идентифицировать каждую запись данных отображаемых юзеру.
ещё раз. Тема про ОРМ и ООП. Нет ни каких таблиц на АппСервере. Есть коллекции. Термин знаком? Или тоже прокладка?
вот это и создаёт проблемы конечному юзеру пофигу коллекции. ему надо таблицу для наглядного представления.
а если в коллекции не предусмотрен id, то это недоработка прогера и прокладки.
сначала мы создаём ООП и ОРМ видимо не осознавая всю структуру или не имея возможности этими прокладками описать более детально. а потом ищем костыли для решения созданных проблем.
...
Рейтинг: 0 / 0
Удаление из коллекции в Hibernate
    #39231761
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JUIT, оно через делет вам и не даст удалить, если в ней есть ФК на другие сущности. Избавьтесь сначала от них, а потом делайте делит. Вариантов два - либо тупо сделать апдейт с пустыми полями (где ФК), либо включить каскадинг (и быть готовым к тому, что удалив одну сущность из базы пропадет еще 500), либо самой ручками по цепочке.
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление из коллекции в Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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