|
|
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Добрый день . Вопрос : как поправить модель так чтобы не происходило этих каскадных вставок ? при добавлении нового билета.... ( Ticket ) в массив билетов ShoppingCart И так есть объектная модель и бизнес код Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. sql лог Код: plsql 1. 2. 3. 4. 5. если добавить еще один билет то так Код: plsql 1. 2. 3. 4. 5. 6. каждый раз очищается и добавляется заново коллекция !!! Модель такая Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. таким образом создается три таблицы Ticket ShoppingCart и ShoppingCartTicket где ShoppingCartTicket - "расшивочная" - по ключам . в ней две колонки shoppingCartId и transactionId создается хибером есть метод добавления нового билета в корзину Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 14:57 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Это же классическая беда из серии n+1 или работа с коллекцией в хибере (сортировка, удаление итд) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:35 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Лол, n+1 это о другом. По теме: http://stackoverflow.com/questions/24580527/hibernate-recreates-join-table-when-adding-to-list ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:38 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
no56892, +1 да это оно самое - после НГ немогу найти автор Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:43 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Hibernate Performance Tips: Dirty Collection Effect https://www.javacodegeeks.com/2012/03/hibernate-performance-tips-dirty.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:45 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
no56892Лол, n+1 это о другом. По теме: http://stackoverflow.com/questions/24580527/hibernate-recreates-join-table-when-adding-to-list и как жить? чтобы пересоздания коллекции каждый раз не было ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:50 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Atum1no56892Лол, n+1 это о другом. По теме: http://stackoverflow.com/questions/24580527/hibernate-recreates-join-table-when-adding-to-list и как жить? чтобы пересоздания коллекции каждый раз не было ? Идея такая - записи в Ticket хранятся а вот записи в ShoppingCart и ShoppingCartTicket - удаляются после завершения сессии - это ShoppingCartTicket и ShoppingCart Это удобная абстракция - а Ticket конкретный билет . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:51 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Atum1и как жить? чтобы пересоздания коллекции каждый раз не было ? Дальше желтенького не осили читать? Либо сделать ассоциацию двунаправленной - Ticket->Shopping Cart Либо замапить настоящий список вместо bag. @OrderColumn, вроде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:59 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Дак там же написано, bidirectorial mapping. Сессии чего? транзакции или бизнес-логики? Если первое нафига вообще ее на БД маппить тогда. Если второе, то что мешает отвязать сделав ticket.getShoppingCard().clear() -> save? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 16:01 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1и как жить? чтобы пересоздания коллекции каждый раз не было ? Дальше желтенького не осили читать? Либо сделать ассоциацию двунаправленной - Ticket->Shopping Cart Либо замапить настоящий список вместо bag. @OrderColumn, вроде. да вот нашел , помню что где то в книгах читал ... https://vladmihalcea.com/2015/05/04/how-to-optimize-unidirectional-collections-with-jpa-and-hibernate/ там все печально Код: java 1. 2. 3. 4. и получаем при удалении из корзины кучу update !!! вместо insert с передвижением номера записи в корзине ... даже и не знаешь что круче - удалить все и вставить или проапдейтить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 17:15 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Atum1, @OrderBy не решает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 17:20 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, @OrderBy не решает? ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 17:46 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
Atum1, Вместо OrderColumn, в котором хранится индекс, просто использовать OrderBy, тогда не нужно апдейтить все сущности при удалении из списка. Разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 17:57 |
|
||
|
JoinTable LazyCollection и множественные вставки
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, Вместо OrderColumn, в котором хранится индекс, просто использовать OrderBy, тогда не нужно апдейтить все сущности при удалении из списка. Разве нет? добавил колонку OrderColumn вставка отлично отработала на ура - вставляется всегда 1 запись ! безе удаления и пересоздания ! а вот решил из корзины удалить один билет было ( решил удалить не последний а первый ) 18:30:26,210 WARN qtp885704837-23 JDBCExceptionReporter:logExceptions:100 - SQL Error: 1062, SQLState: 23000 18:30:26,212 ERROR qtp885704837-23 JDBCExceptionReporter:logExceptions:101 - Duplicate entry '26630-196121' for key 'shoppingCartId' 18:30:26,213 ERROR qtp885704837-23 AbstractFlushingEventListener:performExecutions:324 - Could not synchronize database state with session org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [update ShoppingCartTicket set ticketId=? where shoppingCartId=? and index_id=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update логично ...вроде бы .?! Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 18:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39382548&tid=2123283]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 301ms |

| 0 / 0 |
