Size: a a a

2021 November 24

AU

Anton U in Astana JKUG
когда в контроллере две строчки вызова сервиса
источник

AU

Anton U in Astana JKUG
да, еще совет - не использовать инты и лонги всякие для номеров домов
источник

AU

Anton U in Astana JKUG
телефонов
источник

AU

Anton U in Astana JKUG
и прочего такого
источник

AU

Anton U in Astana JKUG
так как никакой арифметики все равно не будет с ними
источник

AU

Anton U in Astana JKUG
зато потом хлоп и дом 32B/2
источник

A

Aset in Astana JKUG
да я на скорую руку накидал же)
источник

AU

Anton U in Astana JKUG
что-то вроде того мб
источник

AU

Anton U in Astana JKUG
в итоге у тебя будет три кейса
1. в массиве запись без айди или с айди от другого человека - будет создана новая запись
2. если в массиве запись с айди от текущего человека - она обновится
3. если из массива пропадет запись, которая есть в базе - она будет удалена из базы
источник

AU

Anton U in Astana JKUG
ну и тут важно чтобы был Transactional, любые операции над гиберовскими ассоциациями, особенно OneToMany / ManyToMany надо оборачивать в транзакцию
источник

AU

Anton U in Astana JKUG
по дефолту в спринг буте у тебя будет коннект к базе ( open session in view = true ), но не будет транзакции
источник

AU

Anton U in Astana JKUG
до определенного момента вполне будет работать и без ручной транзакции, потому что save() сам по себе Transactional,  но рано или поздно напорешься, лучше сразу делать так
источник

A

Aset in Astana JKUG
Емае, неужели нет проще решения). Спасибо за ответ
источник

BD

Baktybek Doskul in Astana JKUG
По сути ты бы мог спланировать ManyToMany relation так как у Адреса могут быть много жителей. Так правильнее было imho
источник

AU

Anton U in Astana JKUG
У этого подхода свои проблемы
источник

AU

Anton U in Astana JKUG
Например тебе придется делать адрес иммутабельным
источник

AU

Anton U in Astana JKUG
Иначе у тебя один юзер поменяет адрес и он у всех кто к нему привязан поменяется что не то что тебе нужно как правило ( а может как раз и нужно )
источник

BD

Baktybek Doskul in Astana JKUG
Ну если поменять он просто со списка удаляет прежний адрес. Просто добавит новую а для остальных ничего не изменится. А если данные адреса поменяются думаю тогда это будут общим изменением для всех жителей
источник

BD

Baktybek Doskul in Astana JKUG
@aikena1989 Ты зря агрессишься. Тот парень очень хороший контр пример дал с позитивом. Думаю очень не прилично так высказываться
источник

AU

Anton U in Astana JKUG
Проще решение есть - не делай редактирование и создание "вложенных" relationship в рест апи
По "канону" реста ты должен иметь два разных апи - одно для person второе для address
Для добавления адреса - POST /address с person_id в полях, но апдейтить person_id при этом нельзя, в апдейт форме просто не прописываешь это поле
В person можно при этом оставить на выдачу список его адресов с айдишниками, но на вход адреса не принимать
источник