|
|
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Помогите пожалуйста. Есть три сущности: Users, Books, Comments Users @OneToMany Comments Books @OneToMany Comments Comments @ManyToOne Users, Books Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. В консоль выводит: Код: plsql 1. 2. 3. 4. 5. По идее как я понимаю null не должно выводить. Подскажи, может аннотации @OneToMany и @ManyToOne не правильно написал? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2012, 01:15:17 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Это все должно выглядеть примерно вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2012, 11:34:19 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Спасибо, поменял, все-равно не работает, также выводит ссылки null. Может в чем-то другом проблема? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2012, 13:46:13 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Попробуйте cascade = {CascadeType.REFRESH} поменять на cascade = {CascadeType.ALL} НО!!! Возьмите себе за правило, что когда имеете дело с двунаправленными отношениями, то явно обновляйте их с обоих сторон. Т.е. вместо Код: java 1. надо писать Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2012, 15:09:53 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
авторПопробуйте cascade = {CascadeType.REFRESH} поменять на cascade = {CascadeType.ALL} Поменял. Также выдает null Код: java 1. 2. После этого конечно поля заполнены, но это ручная работа.Не понимаю тогда смысла данных аннотаций. Я думал что поля должны заполнятся автоматически. Хотя конечно тут ключевое слово "думал" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2012, 15:48:33 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Скорее всего, это связано с тем, что вы каждое действие делаете в отдельной транзакции. Попробуйте сделать все в одной транзакции, а для записи изменений в базу используйте session.flush(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2012, 18:57:32 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Это то есть примерно так? Код: 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. Все-равно выводит нулл) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 00:32:03 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Хотя конечно если явно обновлять, то все ок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 00:32:50 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krab, Убери все лишние поля из примера и обьясни БЛ по связям. Для какой задачи они нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 07:27:55 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krab, Попробуйте оставить один flush в самом конце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 08:51:23 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Petro123, Есть 3 таблицы. Users, Books, Comments Users имеет много комментариев, то есть связь один ко многим: Код: java 1. 2. Books имеет много комментариев, то есть связь один ко многим: Код: java 1. 2. Comments соответственно: Код: java 1. 2. 3. 4. 5. 6. 7. Хочу чтоб при заполнении полей авторprivate Books book; и авторprivate Users user; автоматически добавлялись комментарии в списки авторprivate List<Comments> commentsForUser; и авторprivate List<Comments> commentsForBook; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:28:36 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Leonidv, Не помогло) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:30:39 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krabComments соответственно: доп.вопрос - зачем в комментарии тебе доп.ссылки на родителей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:36:49 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krab, вопрос снимается. Позже в коде посмотрю - отвечу. Общий случай тебе svenom сказал - вручную и небольшая автоматизация при inverse = True 2 метода объединить в один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:43:03 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krab, ну, давай попробуем.... По логике не вяжется. - Зачем нужны о одних комментариев - 2 родителя? - Что за комментарии у Books? IMHO неправильные ассоциации в модели предметной области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:54:50 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
В объектной модели все в порядке. Каждый комментарий связан с прокомментированной книгой и с пользователем, который его оставил. Логично, что в какой-то момент мы можем захотеть посмотреть все комментарии к данной книге или все комментарии данного пользователя. Логично и разумно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:59:11 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
svenomВ объектной модели все в порядке. Каждый комментарий связан с прокомментированной книгой и с пользователем, который его оставил. Логично, что в какой-то момент мы можем захотеть посмотреть все комментарии к данной книге или все комментарии данного пользователя. Логично и разумно. я не спорю, я предлагаю ВРЕМЕННО убрать ЧТО МЫ ХОТИМ СМОТРЕТЬ и отработать персистентность. Т.е. легко и просто сохранять в БД Или ИДТИ ОТ БД а не от ОРМ. От ОРМ можно пойти через 15 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 12:05:17 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krab, предметная область. От неё зависит модель. - что является ПРЕДМЕТОМ учёта? Вариант: Книги много комментариев + пользователь или Код: java 1. 2. ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 12:13:23 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Petro123, Я ценю Вашу помощь, но немного не понимаю Вас. Предметная область вроде и так должна быть ясна. Обычная библиотека с книгами. Каждая книга может иметь множество комментариев. Также и пользователь может иметь множество комментариев. Книги один ко многим -> Комментарии Пользователь один ко многим -> Комментарии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 15:22:46 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krabPetro123, Предметная область вроде и так должна быть ясна. Обычная библиотека с книгами. ===== нет, если главный - Комментатор или Писатель, то модель будет другая. Предположим что - Библиотека - OK Каждая книга может иметь множество комментариев. Также и пользователь может иметь множество комментариев. нет. Пользователь имеет множество только опосредствованно, по ссылке через другой объект. Т.е. сам по себе, без книг, он имеет комментарии только по ДОП.запросу _аналитическому_ в БД. Т.е. он имеет множество комментарие, но только через книги которые комментирует. Ведь комментарий без книги невозможен? (NOT NULL) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 15:29:07 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
пы сы - отформатировал krabPetro123, Предметная область вроде и так должна быть ясна. Обычная библиотека с книгами. ===== нет, если главный - Комментатор или Писатель, то модель будет другая. Предположим что - Библиотека - OK Каждая книга может иметь множество комментариев. Также и пользователь может иметь множество комментариев. нет. Пользователь имеет множество только опосредствованно, по ссылке через другой объект. Т.е. сам по себе, без книг, он имеет комментарии только по ДОП.запросу _аналитическому_ в БД. Т.е. он имеет множество комментарие, но только через книги которые комментирует. Ведь комментарий без книги невозможен? (NOT NULL) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 15:30:54 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krab, не забывайте про БД и 3 степени нормализации. Покажите 3 таблички с 2-мя заполненными строками. Как бы вы хотели видеть в БД. У нас ООБД пока не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 15:33:20 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Petro123, авторВедь комментарий без книги невозможен? Да, также и книгу нельзя посмотреть без входа в библиотеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 15:37:54 |
|
||
|
Hibernate @OneToMany @ManyToOne
|
|||
|---|---|---|---|
|
#18+
krabPetro123, авторВедь комментарий без книги невозможен? Да, также и книгу нельзя посмотреть без входа в библиотеку. класса библиотеки у нас нету :) Держи вариант: ВИ - User - справочник а не встроенный класс в Коммент Применяют когда выделенный класс User достаточно большой и его выбирают на клиенте из комбобокса. ==================== Книги ----много ко много -------Пользователь 1 Книга - много комментариев (1 к *) Комментарий - справочникПользователь (FK) авторКнига код Название1 ВойнаИмир2 Мурзилка авторКоммент код кодКниги FKUser Текст23 2 34 Плохая45 2 34 Супер авторUser код FIO34 Петров34 Сидоров вот эту схему БД пробуй промаппить на ОРМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 15:49:37 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37647756&tid=2132635]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 312ms |
| total: | 478ms |

| 0 / 0 |
