|
|
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. Как добавить логику, если например удаляется 2 OtherEntity если используется Cascade? Т.е. в сервис приходит Entity с уже двумя удаленными OtherEntity, как в таком случае это обработать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 13:53 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Если ты в объекте Entity удалил 2 OtherEntity, потом делаешь flush или commit своим EntityManager, то все, тех самых 2 OtherEntity не будет ни в памяти приложения ни в БД. После этого передаешь объект Entity в какой-нибудь сервис и не увидишь больше своих удаленных элементов в коллекции. Или я не понял твоей проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:02 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01, Допустим мне при удалении 2х ентити надо отправить емэйл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:05 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892в сервис приходит Entity с уже двумя удаленными OtherEntity кем и где удалёнными? Тип каскада - все. Значит ВСЕ операции, в том числе с БД отслеживает маппинг и потом реализует. Если объекты вне сессии напр. хибера, то их надо аттачить к сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:05 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Может так понятнее будет: Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:09 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Так напиши свой метод removeAndSendEmails() внутри класса Entity и вызывай для удаления только его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:11 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Неправильно выразился. Напиши этот метод removeAndSendEmails() внутри какого-то сервиса. В нем сначала удали, а потом отправь емейл. Просто замени вызовы other.remove() на entityService.removeAndSendEmails() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:13 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Или можешь использовать ListChangeListener. Повесь его на свою коллекцию. Внутри слушателя увидишь, если произошло удаление, то отправляй емейл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:14 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Допустим мне при удалении 2х ентити надо отправить емэйл @PostPersist ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:14 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Там большой граф с Ентити, и помимо удаления 2х объектов Юзер еще много чего модифицирует. Как ты предлагаешь это не подходит, т.к. не будет сделано в одной транзакции раз и ты предлагаешь удалить CASCADE два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:15 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123no56892Допустим мне при удалении 2х ентити надо отправить емэйл @PostPersist ? Тогда уж @PostRemove - Executed after the entity manager remove operation is actually executed or cascaded. This call is synchronous with the remove operation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:16 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123no56892Допустим мне при удалении 2х ентити надо отправить емэйл @PostPersist ? Здорово, но как я узнаю что удалилось 2 Ентити? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:17 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Здорово, но как я узнаю что удалилось 2 Ентити? нет логики. Что значит 2? Это сакральное число? Тогда это бизнес-логика и делать нужно по другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:20 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123, вообще, нельзя на триггеры в кавычках нагружать отправку по мылу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:21 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
С такой логикой подходит лучше всего ListChangeListener. В нем ты можешь увидеть, что удалилось именно 2 элемента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:22 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123, Как, кроме как руками все разбирать и забить на Cascade? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:22 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01С такой логикой подходит лучше всего ListChangeListener. В нем ты можешь увидеть, что удалилось именно 2 элемента. Хибернейт свои коллекции использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:26 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Petro123, Как, кроме как руками все разбирать и забить на Cascade? не могу ответить когда постановка странная). Что за число 2 и кто создал проблему с этим числом? Если нужно отправлять мыло только при выписке из квартиры двоих, то проверять надо в сервисном слое где происходит выписка. Модель данных, маппинг и каскад ни при чём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:29 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01что удалилось именно 2 элемента. можно в триггере Код: java 1. 2. )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:31 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892, там много чего есть: Код: java 1. Ещё есть контекст. Посмотри что там можно посчитать про "2". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:36 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
no56892Паша01С такой логикой подходит лучше всего ListChangeListener. В нем ты можешь увидеть, что удалилось именно 2 элемента. Хибернейт свои коллекции использует. Когда я юзал Eclipse Rap фреймворк, в котором использовались такие слушатели, то я мог взять объект Entity и в любом месте в приложении повесить на его поле Set<OtherEntity> others слушатель. И в слушателе делал, что мне надо было. Ты сказал, твои объекты Entity юзаются в каком-то графе. Если ты погуглишь, наверняка найдешь примеры таких слушателей и у тебя будет код выглядеть примерно как я описал ниже. И станет совсем неважно, что Хибернейт свои коллекции использует. public void addEntityToGraph(Entity en, Graph graph) { ObservableSet obsvSet = BeanProperies.observeSet(Entity.class, "others", typeOfOthers) obsvSet.addValueChangeListener(new ValueChangeListener(Event diff) { diff.newValue... }); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:40 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Да и вообще гугл меня приводит к http://www.glazedlists.com/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 14:42 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Паша01и в любом месте в приложении повесить на его поле а если юзверь просто играется с коллекцией? Т.е. коммит - сохранить не нажимал, а идёт по мастеру страничкам в одной сессии. Тогда зазря уйдёт по мылу сообщение об удалении 2-х объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:03 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Petro123Паша01и в любом месте в приложении повесить на его поле а если юзверь просто играется с коллекцией? Т.е. коммит - сохранить не нажимал, а идёт по мастеру страничкам в одной сессии. Тогда зазря уйдёт по мылу сообщение об удалении 2-х объектов. Слушай, ты может сразу все расскажешь? Судя по твоему комментарию, ты банально можешь добавить поле oldOthersSize в Entity. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Инициализируей его перед тем, как добавить объект Entity в свой граф. Когда юзер нажимает кнопку Сохранить, тупо сравниваешь размер текущей коллекции с переменной oldOthersSize. И все. Вот так легко узнаешь, что удалилось именно 2 элемента. Решение может и не верх элегантности, но реализуется максимум за 5 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:14 |
|
||
|
JPA CASCADE
|
|||
|---|---|---|---|
|
#18+
Или ещё 2-ой вариант, более универсальный. Если ты удалил 2 элемента коллекции others, и сохранишь это, то для объекта Entity ВРОДЕ КАК должна сработать конструкция @PostUpdate. И в нем с помощью все той же переменной oldOthersSize из примера выше узнаешь, что удалилось 2 элемента. Вот только я точно не знаю, сработает ли @PostUpdate в такой ситуации. Возьми проверь ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:21 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=89&tid=2123768]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 376ms |

| 0 / 0 |
