|
|
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Добрий день. Есть два Entity класа: Код: 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. Код: 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. Так вот, если я хочу вибрать всех Users по Books, то мне достаточно звернутся к списку usersList? Тобто JPA заносит всех Users в usersList автоматически или надо писать какие-то ищо методы? В меня что-то в usersList заносятся не все Users, а иногда после перезапуска проекта все занесутся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 15:57:16 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
denis11111В меня что-то в usersList заносятся не все Users, а иногда после перезапуска проекта все занесутся... в таких случаях пишут - Ошибка в 17 строке, т.к. кто кроме тебя разберётся в "что-то" и "иногда". Дебажь и тестируй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 16:42:04 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Вот зделал я выборку всех записей из таблицы Books. В меня создался список обьектов Books. Вы знаете что каждый обьект это своего рода отдельная строка в таблице. Как вы видете в коде выше, в Entity-класе Books есть "List<Users> usersList", который должен бы хранить список обьектов Users, которые привязаны к текущему обьекту Books. Вот usersList меня и интересует, он сам заполняется или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:13:28 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
denis11111Вот usersList меня и интересует, он сам заполняется или нет сами, во время вызова Код: java 1. при условии, что aBook находится в контексте (PersistenceContext). Другой вопрос, что если в список (полученный aBook.getUsersList()) добавить нового юзера, то новый не сохранится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:37:58 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
А что надо делать чтоб userList оновлялся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:55:43 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
denis11111А что надо делать чтоб userList оновлялся? создать объект aUsers, setBook(abook) (кстати, в твоем случае bookId, что не красиво), em.pesist(aUsers).Где em - EntityManager или настроить каскад (см cascade, CascadeType) со стороны Book и сохранять как em.merger(aBook). Но здесь свои тараканы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 18:28:44 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Entyty-Books Код: 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. Entyty-Users Код: 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. Абстрактной клас модели Код: 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. Сами модели: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Так вот, теперь создаем контрелер: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 18:59:47 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
denis11111, 200 строк кода для 2-полей ! Код + Имя. А ведь в обычной ИС по 500 классов с 15-20-50 полями. ЗЫ. Так, мысли вслух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2012, 10:00:40 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
denis11111, http://www.sql.ru/forum/actualthread.aspx?tid=927509&pg=2&mid=12282254&hl=book%20b%20new%20book#12282254 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2012, 10:13:26 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Petro123denis11111, http://www.sql.ru/forum/actualthread.aspx?tid=927509&pg=2&mid=12282254&hl=book%20b%20new%20book#12282254 Petro123 прав, тут все дело в LazyInitialization Проблема в том, что при создании нового пользователя, он отлично записывается в базу. Но он не "уведомляет" aBook, кот. уже в контексте (и возможно уже закеширована), что у нее появился новый юзер. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Результат: Hibernate: select book0_.id as id3_1_, book0_.title as title3_1_, users1_.book_id as book2_3_3_, users1_.id as id3_, users1_.id as id4_0_, users1_.book_id as book2_4_0_ from book book0_ left outer join users users1_ on book0_.id=users1_.book_id where book0_.id=? book1 user count: 11 Hibernate: insert into users (book_id) values (?) After saving: 11 Должно быть 12. em.refresh(aBook), конечно, решит проблему. But it's odd! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2012, 10:38:56 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Время шло, а в голове все витает мысль: а почему u (User) ничего не говорит aBook, что он изменился. Слишком трудозатратно? И дело ведь тут не LazyInitialization, IMHO... Если уйти от коллекции, то результат останется тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 15:51:07 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Поставь Код: java 1. И тогда ты при загрузке данных с базы будешь получать не пустой список. Но это плохой тон, загружать сразу все данные из базы. Лучше при загрузке обращайся в ручную к списку, только при необходимости, например Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 16:22:27 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Вот у меня похожая ситуация, только другая проблема) Код: java 1. 2. Код: java 1. 2. 3. 4. Код: java 1. 2. 3. 4. В итоге обновления нет, в чем проблема у меня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 16:28:40 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
krab, ну дак, приведи полный код примера-теста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:11:08 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Petro123krab, ну дак, приведи полный код примера-теста. Каскад указать, наверное забыл: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:22:33 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
krabПоставь Код: java 1. Неее, не в этом дело... ты не понял. Мне "не нравится" не ленивая инициализация (кстати, для коллекция по умолчанию она всегда ленивая), а то что EntityManager мог бы быть порасторопнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:25:00 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Petro123, Код: 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. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:31:44 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Метод добавления работает нормально. Метод обновления не обновляет список городов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:34:55 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
krab, merge() возвращает новый объект. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:40:10 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Vladmir K, Т.е. мне нужно сделать Код: java 1. ? И вообще если метод возвращает новый объект, то почему я вижу только одни селекты из базы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:44:26 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
krabVladmir K, Т.е. мне нужно сделать Код: java 1. ? Если честно, то я уже потерялся. Проблемный метод public String updateRegion()? Мне кажется что проблема с отображением. На уровне базы отрабатываться должно. И вообще если метод возвращает новый объект, то почему я вижу только одни селекты из базы? после Код: java 1. 2. 3. 4. insert должен пройти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 17:59:18 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Vladmir K, Да, проблемный метод updateRegion А вот инсертов в базе нет, и проблема именно в этом. Не пойму почему так происходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 18:09:01 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
krab, cascade = CascadeType.MERGE есть на Region? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 18:16:05 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
Vladmir K, Код: java 1. 2. Так тоже инсерта не наблюдаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2012, 18:25:06 |
|
||
|
JPA OneToMany
|
|||
|---|---|---|---|
|
#18+
krab, Код: java 1. 2. Если дебаг показывает, что listOfPickCities и region изменились, а нет инсерта, то давай лог в студию. (<property name="hibernate.show_sql" value="true"/>) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 07:49:44 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37824731&tid=2131579]: |
0ms |
get settings: |
14ms |
get forum list: |
20ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
54ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 331ms |
| total: | 536ms |

| 0 / 0 |
