|
|
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01Слушай, ты может сразу все расскажешь? не. Я сам размышляю что лучше, что хуже. Нет однозначности). Да и постановка странная. Паша01Решение может и не верх элегантности, но реализуется максимум за 5 минут. да. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:23 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01И в нем с помощью все той же переменной oldOthersSize +1 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:25 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123, Хаха, мне показалось, что это он написал, ник не посмотрел ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:39 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01Petro123пропущено... а если юзверь просто играется с коллекцией? Т.е. коммит - сохранить не нажимал, а идёт по мастеру страничкам в одной сессии. Тогда зазря уйдёт по мылу сообщение об удалении 2-х объектов. Слушай, ты может сразу все расскажешь? Судя по твоему комментарию, ты банально можешь добавить поле oldOthersSize в Entity. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Инициализируей его перед тем, как добавить объект Entity в свой граф. Когда юзер нажимает кнопку Сохранить, тупо сравниваешь размер текущей коллекции с переменной oldOthersSize. И все. Вот так легко узнаешь, что удалилось именно 2 элемента. Решение может и не верх элегантности, но реализуется максимум за 5 минут. Это уродство))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:16 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Это уродство))) Когда костыль является единственным решением, он становится эталонным))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:23 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Оно не единственное, похоже придется при мердже сначала вытаскивать из базы еще раз и сравнивать ручками расхождения в списках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:32 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Это уродство))) какая постановка, такое и решение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:33 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892вытаскивать из базы еще раз сессии разные. Что с чем сравнивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:34 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123, Какая разница то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:38 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Petro123, Какая разница то. мы пока гадаем что означает цифра 2. 1. Например, в соседней сессии параллельно юзверь из 4-х чилдрен сделал 3. А ты тут перечитываешь из базы где тоже одну удалил. 2. У хибера механизм версии сущности тоже точно такой же. Есть поле версия и мы потом сохраняя сверяемся с базой. Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:58 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123и мы потом сохраняя сверяемся с базой. вернее не мы, а хибер. Нам "нельзя" этот счётчик трогать. Т.е. Паша01 вроде здраво предложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 17:00 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123, 1.Юзер вытащил с 4мя чайлдами. Сессия закрыта. 2.Юзер удалил (снял 2 чекбокса например) 2 чайлда в своем локальном графе. 3.Кто-то в это время из базы удалил 1 чайлда, т.е. по факту в базе сейчас уже 3, а не 4. 4.Юзер нажимает сейв. 4.1. Вытаскиваем из базы свежий список и видим что там 3. 4.2. разница != 2 => следовательно ничего не делаем, просто мерджим. В случае если завести поле в классе, то в примере выше это условие сработает, и будет как будто он сам удалил 2 шт. Причем здесь версионность вообще? Как ты собираешься версионность к OneToMany применять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 17:14 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no568924.1. Вытаскиваем из базы свежий список и видим что там 3. 4.2. разница != 2 => следовательно ничего не делаем, просто мерджим. какой смысл в этом числе? Представь, что в БД 100 юзверей постоянно меняют и правят дочек "Прописано" у ноды "Квартира". Т.е. каждую секунду цифра меняется от 0 до 30ти. Т.е. при сохранении эту цифру {0...30} ты с чем сравнил: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 17:54 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Причем здесь версионность вообще? Как ты собираешься версионность к OneToMany применять? я сказал, что Паша01 привёл метод как в версионности. На что ты выше написал - Уродство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 17:55 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892, если у тебя МАКС количество дочек = 2 в Модели(БД), то это ДРУГОЕ условие и ТЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 17:57 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892, короче, мне метод Паша01 понравился больше). Выбирай сам. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 18:02 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
А еще, если гарантированно нужно отправить письмо, то по срабатыванию условия должна создаваться запись в какой-то таблице, из которой отдельный процесс будет периодически выгребать записи и рассылать по ним письма. Иначе возможны ситуации либо когда записи удалятся, а письмо отправится либо наоборот - записи не удалятся, а письмо отправится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 18:28 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Локшин МаркА еще, если гарантированно нужно отправить письмо, то по срабатыванию условия должна создаваться запись в какой-то таблице, из которой отдельный процесс будет периодически выгребать записи и рассылать по ним письма. Иначе возможны ситуации либо когда записи удалятся, а письмо отправится либо наоборот - записи не удалятся, а письмо отправится. Да, письмо как пример, на самом деле надо вставлять запись в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 18:31 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2123768]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
14ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 471ms |

| 0 / 0 |
