|
|
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть классы TaskEntity, PersonEntity, StatusEntity. TaskEntity и StatusEntity связанs много-к-одному. TaskEntity и PersonEntity связаны многие-ко-многим. Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Таблицы генерит нормально, для отношения многие-ко-многим создает промежуточную таблицу TASK_PERSON. Создаю функцию вызова Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. И тут возникает проблема с созданием и инициализацией коллекций. При создании объекта StatusEntity, связанному с TaskEntity отношением один-ко-многим Код: java 1. 2. 3. 4. 5. 6. 7. все ок. В объекте status автоматом создается коллекция tasks и код Код: java 1. выполняется без проблем. А вот при создании объектов PersonEntity Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. в объекте task коллекция persons=null; А в объектах PersonEntity personSender и personReciever коллекция tasks=null. Т.е. автоматом при создании объекта под них не выделилась память. И соответсвенно Код: java 1. 2. 3. 4. тут вылазит исключение. Что я делаю не так? Почему при работе со StatusEntity при связи один-ко-многим коллекция автоинициализируется. А при отношении с PersonEntity при связи многие-ко-многим - переменные коллекции так и остаются с null? Объекты PersonEntity и TaskEntity создаются - проверено дебагером. Код: java 1. 2. пробовал ставить в разные места и в конце и перед созданием PersonEntity, и после них - не помогает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 13:47:00 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
А так: alex2808public class PersonEntity implements Serializable { private Collection<TaskEntity> tasks = new ArrayList<TaskEntity>(); alex2808Т.е. автоматом при создании объекта под них не выделилась память. facepalm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:01:46 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
alex2808, могу ошибаться, но тут: Код: java 1. вы можете получить прокси от JPA провайдера вместо своего объекта, и прокси может вернуть свою инициализированную реализацию коллеции. А если вы создаете класс самостоятельно, то JPA ничего о нем не знает и вы и ответственны за инициализацию коллекции, но вы даже не пытались это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:09:09 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА так: alex2808public class PersonEntity implements Serializable { private Collection<TaskEntity> tasks = new ArrayList<TaskEntity>(); alex2808Т.е. автоматом при создании объекта под них не выделилась память. facepalm Смотрел в примерах, нигде руцями не создается. Все автоматом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:12:10 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
alex2808Все автоматом. обычно промежуточная таблица не генерится а уже есть в БД. Маппинг проще imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:17:54 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
Petro123, Petro123обычно промежуточная таблица не генерится а уже есть в БД. Ну это если начинать от БД, а тут судя по alex2808 Таблицы генерит нормально, для отношения многие-ко-многим создает промежуточную таблицу базы не было вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:20:36 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
alex2808, alex2808Смотрел в примерах, нигде руцями не создается. Все автоматом. где такие примеры? Откуда в объекте который вы создали возьмется инициализированная коллекция, если вы ее не инициализировали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:25:38 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
alex2808Смотрел в примерах, нигде руцями не создается. Примеры примерами, а лишнее null в коде - больше NPE в тестировании. http://qconlondon.com/london-2009/presentation/Null+References:+The+Billion+Dollar+Mistake Из вашего кода не понятно где что создаёт JPA, а где вы сами. Когда вы сами создаёте экземпляры, JPA ничего не может поделать с вашими объектами. alex2808в объекте task коллекция persons=null; А в объектах PersonEntity personSender и personReciever коллекция tasks=null. А при отношении с PersonEntity при связи многие-ко-многим - переменные коллекции так и остаются с null? Кто у вас null? Почему? Уберите простыню. Локализуйте минимальный проблемный пример и давайте его обсудим. Пока я вижу вот что Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:29:54 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
javapecker, ну да, согласен. Я тс'а имел ввиду - "Для жизни создать все таблички, маппинг и всё будет под контролем" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:32:12 |
|
||
|
JPA2 проблема с связанными коллекциями при отношении Многие-ко-многим
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, BlazkowiczИз вашего кода не понятно где что создаёт JPA, а где вы сами. Предполагаю, что там где "em.", там JPA. Маловероятно что в методах типа createPerson тоже будет использоваться em, поскольку Код: java 1. явно он в эти методы не передается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:39:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37920885&tid=2131094]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
59ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 306ms |
| total: | 488ms |

| 0 / 0 |
