|
|
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
Есть объект Avto в него вставлена коллекция других объектов List<Complect> list. Теперь нужно эту коллекцию list вставить в другой объект, причем вставить так, чтобы скопировать всю информацию по объектам Complect с=new Complect(); хранящимся в list, но без уникальных идентификаторов. Просто перебором в цикле как-то не очень хочется. Подскажите как лучше сделать? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 23:44:44 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
JulT, Не хочется, в смысле лень писать? Тогда в БД insert into ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 08:35:48 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
Petro123JulT, Не хочется, в смысле лень писать? Тогда в БД insert into ) Расскажу подробнее. Есть класс Код: java 1. в нем: Код: java 1. 2. 3. 4. 5. 6. 7. Далее, есть другой класс: Код: java 1. в нем так же есть методы: Код: java 1. 2. 3. 4. 5. 6. 7. После того, как я получила коллекцию zakazCollection с класса Schet, мне нужно вставить ее в класс Avto. При этом в класс Avto должны попасть все объекты Zakaz из коллекции zakazCollection, но со своими уникальными идентификаторами. Если делать в цикле, то получается так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. т.е. пробегаю по коллекции, перебираю все объекты Zakaz из этой коллекции, копирую всю информацию из них в новые объекты Zakaz, кроме id, потому что id объектов класса Avto должны быть уникальными, далее делаю manager.persist(newZakaz); и после этого вновь созданные объекты Zakaz вставляю виде новой коллекции в класс Avto. Есть ли другой более короткий способ? Надеюсь понятно изъяснилась.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 15:48:28 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
JulTт.е. пробегаю по коллекции, перебираю все объекты Zakaz из этой коллекции, копирую всю информацию из них в новые объекты Zakaz, кроме id, потому что id объектов класса Avto должны быть уникальными, далее делаю manager.persist(newZakaz); и после этого вновь созданные объекты Zakaz вставляю виде новой коллекции в класс Avto. Есть ли другой более короткий способ? Надеюсь понятно изъяснилась.... В целом верно, но можно упростить. Во-первых явное копирование по свойствам это нарушение это загодовка для будущих баг. Если сущности точно не проксированые, можно их же и использовать, просто, вызвать setId(null). Либо использовать clone() или BeanUtils для копирования свойств. Сохранение можно попробовать сделать каскадным в маппинге, чтобы не сохранять каждую сущность отдельно. Код: java 1. 2. 3. 4. Почему вот это делается в цикле - большая загадка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 15:56:17 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJulTт.е. пробегаю по коллекции, перебираю все объекты Zakaz из этой коллекции, копирую всю информацию из них в новые объекты Zakaz, кроме id, потому что id объектов класса Avto должны быть уникальными, далее делаю manager.persist(newZakaz); и после этого вновь созданные объекты Zakaz вставляю виде новой коллекции в класс Avto. Есть ли другой более короткий способ? Надеюсь понятно изъяснилась.... В целом верно, но можно упростить. Во-первых явное копирование по свойствам это нарушение это загодовка для будущих баг. Если сущности точно не проксированые, можно их же и использовать, просто, вызвать setId(null). Либо использовать clone() или BeanUtils для копирования свойств. Сохранение можно попробовать сделать каскадным в маппинге, чтобы не сохранять каждую сущность отдельно. Код: java 1. 2. 3. 4. Почему вот это делается в цикле - большая загадка. а как же мне без цикла вставить коллекцию Код: java 1. ? на вскидку скажу, что я использую TopLink. что касается каскадного сохранения, то это делается так? в классе Код: java 1. : Код: java 1. 2. изменить на: Код: java 1. 2. я правильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 16:55:42 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
JulTа как же мне без цикла вставить коллекцию Collection<Zakaz> zakazCollection А почему каждая итерация происходит в своей транзакции? JulT Код: java 1. 2. я правильно понимаю? Да - что-то похожее, но надо почитать про типы каскадов. Конкретно этот может не отработать, если родительсий объект уже presisted. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 16:58:32 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА почему каждая итерация происходит в своей транзакции? А разве так сработает?: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:04:09 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
JulTА разве так сработает? Что заставляет вас в этом сомневатся? Для чего вообще транзакции нужны по-вашему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:07:09 |
|
||
|
Работа с JPA
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJulTА разве так сработает? Что заставляет вас в этом сомневатся? Для чего вообще транзакции нужны по-вашему? я думала, что при таком подходе в базу вставится последняя запись коллекции.... буду пробовать, спасибо большое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:22:20 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38110241&tid=2130184]: |
0ms |
get settings: |
18ms |
get forum list: |
31ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
71ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 294ms |
| total: | 567ms |

| 0 / 0 |
