|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Суть проблемы в таблие LimitRangeEntity стоит ограничение на уникальность по limit_id & postion Клиент изменяет список LimitRangeEntity Для примера удаляет первую запись, а в других автомтаически меняется position То у меня при попытке сохранить такой измененный LimitEntity возникает error связанная Unique constraints Я нашел похожую проблему https://stackoverflow.com/questions/24724152/jpa-clear-collection-and-add-new-items Как и пишет Vlad Mihalcea , я пробовал в тесте разить на две операции Delete & Update все работает Но есть ли решения в рамках одной транзакции? Проводить анализ, что изменилось в DTO Limit приходящем со стороны фронт LimitEntity и из БД Теоретическии можно, но много вложенностей Если еще идеи? на крайняк буду снимать constraints ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 18:25 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
Если управляющая сторона - это LimitEntity, то обновление элементов коллекции (limit_id) и изменение самого LimitRangeEntity - это две разные SQL операции. Для того чтоб изменить состав коллекции нужно собсно удалить/добавить элемент в нее. Если управляющая сторона - это LimitRangeEntity (надо с другой стороны проставить mappedBy), то на все ее обновления (position, limit_id) будет один UPDATE. Но тогда чтоб связать эти две сущности нужно limitRangeEntity.setLimit(limitEntity). При этом изменение коллекции со стороны LimitEntity не будет ни к каким SQL операциям приводить. Т.е. второй способ с mappedBy решит твою проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 18:49 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- Для примера удаляет первую запись, а в других автомтаически меняется posi ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 19:04 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Если управляющая сторона - это LimitEntity, то обновление элементов коллекции (limit_id) и изменение самого LimitRangeEntity - это две разные SQL операции. Для того чтоб изменить состав коллекции нужно собсно удалить/добавить элемент в нее. Если управляющая сторона - это LimitRangeEntity (надо с другой стороны проставить mappedBy), то на все ее обновления (position, limit_id) будет один UPDATE. Но тогда чтоб связать эти две сущности нужно limitRangeEntity.setLimit(limitEntity). При этом изменение коллекции со стороны LimitEntity не будет ни к каким SQL операциям приводить. Т.е. второй способ с mappedBy решит твою проблему. Да сейчас сверху стоит LimitEntity он содержит 1 - много LimitRangeEntity, который в свою очередь тоже может содежрать 1 - много LimitSubRangeEntity Получается что-то 2-ого дерева И отследить что-где удалилось немного проблематично ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 19:32 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- на две операции Delete & Update все работает Но есть ли решения в рамках одной транзакции? Много транзакций всегда можно в одну при желании. Constraints можно тоже снимать так как ОРМ. За целостностью следит хибер и руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 19:37 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
PetroNotC Sharp -=Koba=- на две операции Delete & Update все работает Но есть ли решения в рамках одной транзакции? Много транзакций всегда можно в одну при желании. Constraints можно тоже снимать так как ОРМ. За целостностью следит хибер и руки. Я понимаю что ничего плохого нет Но мне надо найти измения в DTO & Entity Я отдаю на фронт например Код: java 1. 2. 3. 4. 5.
Фронт удаляет одну запись и удаляет новую Код: java 1. 2. 3. 4. 5.
Мне надо найти что между Новым объектом и страым отсутсвует - LimitRangeDto = (1,111,0,Name 1) Выполнить удаление далее обновить оставшиеся LimitRangeDto и добавить новую LimitRangeDto = (...,111,3,Name 5) И сохранить Просто вложенность большая ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 19:44 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=-, Это нарушение REST. Было в прошлой теме. Не пиши Г. код ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 19:57 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=-, Если уже обсуждали, зачем прикидываться что вопрос новый. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 19:59 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
Удаляй всю бд и заливай новые данные. Это импорт а не REST ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 20:00 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
Попробуй сделать merge на дереве. Быстрее сдохнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 20:02 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
для вашего сценария работы должна быть другая модель данных: @OneToMany Set<LimitRangeEntity> должно быть на самом деле @ElementCollection, а LimitRangeEntity - @Embeddable ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 20:11 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Я не совсем понимаю в чём нарушение В том что дто может содержать вложенные данные? У меня затык что они динамически добавляются и удаляются. Но заказчик не пойдет на то, чтоб crud операции ставить на каждый уровень По сути это таблица с subdetails Она приходит сразу в виде json и уходит в виде json Таблицы конечно громко сказано Table Row1 --Sub1---Sub2 Row1 --Sub1---Sub2---Sub3 Вот и получается Что есть Entity которая содержитмассив Entity, а тот в свою очередь ещё массив Если я б мог работать,. С каждой Entityпо отдельности, не задавал такие вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 23:22 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
Заведи просто в таблице пол Json. Если он - атомарен - то и никаких нарушений модели не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2022, 23:35 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- Но заказчик не пойдет на то, чтоб crud операции ставить на каждый уровень - заказчику какое вообще дело до API? - твоя задача донести до него что объект это сущность. Каждая сущность это таблица. Сущность это ресурс в урл и следовательно CRUD над сущностями. Сейчас у тебя так. Вместо: addRole( delRole( addRoles( У тебя ЗАКАЗЧИК ХОЧЕТ: save(хрен знает что в json) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 06:53 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- Она приходит сразу в виде json и уходит в виде json А если нет, тогда не ври что у тебя "приходит и уходит". "Модель данных" - с этого в ВУЗЕ начинают. Row1 --Sub1---Sub2 Row1 --Sub1---Sub2---Sub3 Подробнее! Пример данных. Что выделил для сущностей. Так как сущности выделяют по БЛ а не по веточкам дерева. ... Пол года прошло а ты все никак не разговариваешь и только топчешься на месте. Может тебе и REST противопоказан. Imho ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 07:02 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Row1 --Sub1---Sub2 Один ко многим, Юзверь - - > Заказы. Делается по REST урл app/users и app/users/1234/orders Неужели это непонятно? Первый класс вторая четверть... Ждем модель данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 07:09 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- Но заказчик Пусть расскажет НА ЧТО он делит все API в таком случае. Если уровни вместе, операции вместе, сущности вместе. Это прямо анекдот получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 07:14 |
|
Unique constraints и обновление OneToMany
|
|||
---|---|---|---|
#18+
-=Koba=- Для примера удаляет первую запись, а в других автомтаически меняется position какой то сумбур в голове ,не подскажете грешным делом ,как во множестве вы сумели найти "первую запись"))) я тебе коба уже тысячу раз писал - начни с азов - алгоритмы и структуры данных -хотя бы те,которые используются в java чтобы не возникал Unique конфликт ты должен перепределить хеш и иквелс методы ,тогда и в множество положить не получится дубли ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 16:12 |
|
|
start [/forum/topic.php?fid=59&gotolast=1&tid=2120245]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
103ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 214ms |
0 / 0 |