Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление из коллекции в Hibernate / 25 сообщений из 52, страница 1 из 3
07.05.2016, 18:15
    #39231347
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление из коллекции в Hibernate
Сущность 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
08.05.2016, 07:13
    #39231427
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление из коллекции в Hibernate
JulT,
я начну опять флудить, эти лишние строки...
твой выбор....
а пррсто делается через jdbc простым delete
...
Рейтинг: 0 / 0
08.05.2016, 10:38
    #39231467
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление из коллекции в Hibernate
JulT,
Совершенно не обязательно вычитывать passport чтобы удалить. Достаточно пустого объекта с заполненным ID. Для того чтобы не трогать клиента достаточно настроить каскады. Даже метод save вызывать не обязательно.

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

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

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

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

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

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

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

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

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


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