|
Entity merge
|
|||
---|---|---|---|
#18+
Как лучше обновлять entity имеющие у себя дочерние связи? Вот например Person entity... При update Я получаю по id нужную мне entity, проставлю новые значение и сохраняю... Тут вопрос нет Вопрос если в Person entity есть поля например @OneToMany Set<BookEntity> books И когда приходит на обновление PersonDto , мне надо Какую-то BookEntity обновить, какую-то добавить, какую-то удалить... Грубо говоря смержить два листа Было б это в одном месте, я б написал в конвертере такую вещь Проблема в другом, когда мне передаётся вся иерархия PersonDto для обновления такое место не одно... Может есть какой-то подход, как правильно обновлять такие вещи PS пардон за форматирование, с телефона ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:02 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Как вижу я сейчас Писать метод, куда будет передаваться Set<Entity> , Set<Dto> и Converter<Entity, Dto> Далее 1 бегу по Set<Entity> и ищу Id в Set<Dto>, если нахожу то такие Entity надо обновить convert.update(entity, Dto) 2 если не нахожу, то такие Entity надо удалить 3 бегу по Set<Dto> если есть Dto с I'd null, то считаю , что это новые записи и их надо создать, converter. create(dto) И в итоге формирую уже конечный сет Но думаю, что уже кто-то делал подобное, может есть варианты проще) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:10 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Если на минутку забыть про Hibernate, у Book обязана быть ID? Иными словами: работаем ли мы с Book вне Person? Ссылается ли еще кто-то на Book кроме него, или может мы Book по ID запрашиваем отдельно? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:20 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Id это primary key из БД Да я могу получить Список всех книг определенного person Или определенную книги по ее Id Но вот обновлять надо все связке.. приходит PersonDTo ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Спрошу по-другому - могли бы мы вообще удалить колонку ID из таблицы BOOKS? Например, запросить все книги Person'a можно и без нее, для этого use case'a нам колонка ID не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:32 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, А можете немного развернуть свою мысль? Под конец дня немного голова не соображает Если тупо удалить, то нет не могу.. В entity надо поле, id... Чисто теоретически primary key book , может совпадать с primary key person... Книги будут уникальный для каждого человека Или вы подталкиваеете меня в SQL бд сделать nosql Хранить информацию о книгах в виде json напрмер ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 00:03 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Хранить книги в JSON колонке - тоже вариант. Но опять же - только если книги составляют композицию с человеком (человек определяет жизненный цикл книги и та не существует вне человека). Реляционный же подход в таком случае - это использовать таблицы без ID (в JPA это @ElementCollection - собсно у таких элементов нет ID). И ORM будет перезаписывать списки сам. Все сводится к тому чтоб удалить сначала все записи этого человека, а потом вставить все записи из обновленной коллекции. Т.к. на книгу больше никто не ссылается, то пересоздание записи не приводит к побочным эффектам. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 00:52 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Попробовал я ElementCollection да отлично работает, Но Если BookEntity Содержит в себе OneToMany , то тут уже проблема начинается, @ Embeddable yне может содержать @Id ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 03:15 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Добавил два метода updateEntity Код: java 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
Которые уже или обновляют существующие entity если id совпало, или конвертируют их в новые ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 04:00 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Проблема в другом, когда мне передаётся вся иерархия PersonDto для обновления такое место не одно... Может есть какой-то подход, как правильно обновлять такие вещи При REST таких случаев возникать не должно. Напр Http://sql.ru/app/person/345 Передаем персоне список книг. Дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:06 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev человек определяет жизненный цикл книги и та не существует вне человека). Существует ли сущность книга отдельно? А то куда то в сторону повел про встроенные книги в человеке) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:09 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Какую-то BookEntity обновить, какую-то добавить, какую-то удалить... Грубо говоря смержить два листа По REST merge делает клиент. Он делает delete и передает список УДАЛЯЕМЫХ книг. Тупо, просто и гениально)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:13 |
|
Entity merge
|
|||
---|---|---|---|
#18+
В данном случае передается объект Person Новым списком кнмг ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:41 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- В данном случае передается объект Person Новым списком кнмг Говори еще яснее. На урл Http://sql.ru/app/person/345 Передается персона с айди 346? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 08:26 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, API на бэке проектируешь ты? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 08:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Да все верно Http://sql.ru/app/person/345 Передается иерахические данные по персону ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:02 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, Блин, да что верно то? Айди совпадает? Модификаторы CRUD отпавляем? Если отправляем по стандарту рест, тогда ты отправляешь при добавить только новые книги. Если не отправляем, тогда ты можешь тупо удалить все что в бд и записать новое состояние книг персоны. Ферштейн? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:14 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, Иерархию поканаблюдаю всего два уровня человек - > книги ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:18 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, При рест у тебя API addBook(id, person) delBook(id, person) updateBook( Причем, класс персон можно не слать. При желании. Ты вероятно пытаешься сделать метод возьмуЧтоУгодно(барахло) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:21 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вся проблема в том, что отталкивается от кода, а не от структуры данных. если б нарисовал на бумажке все связи меж таблиц - не было б вопросов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:00 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя, Увы. Молодое поколение уже не исправить. С другой стороны тут случай детский - Персона и его книги))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:22 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя, Кстати, я и в бд MERGE редко использовал. Достаточно специфическая команда. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:41 |
|
Entity merge
|
|||
---|---|---|---|
#18+
На фронте открывает форма редактировать Добавляются все новые поля и отправляется все одним махом Книги , машины, данные персоны итд... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 08:49 |
|
|
start [/forum/topic.php?fid=59&msg=40120462&tid=2120280]: |
0ms |
get settings: |
3ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
36ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
415ms |
get tp. blocked users: |
0ms |
others: | 2624ms |
total: | 3090ms |
0 / 0 |