|
Java Hibernate
|
|||
---|---|---|---|
#18+
Привет, возникла небольшая проблема с Hibernate. Недавно начал изучение и не получается решить одну проблему. У меня существует 3 сущности: Автор, Произведения автора. Связь между сущностями много-ко-многим. Код: 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. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Метод, который в качестве аргумента принимает класс объекта и возвращает все записи, которые связаны с полученным классом. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В результате я в ответе получаю JSON в котором находится столько экземпляров одной единственной книги, скольким авторам она принадлежит: если с книгой связано 3 автора, я получаю 3 экземпляра, если 4 - 4 экземпляра и т.д. Не могу отловить ошибку: Код: xml 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 15:46 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
авторМетод, который в качестве аргумента принимает класс объекта и возвращает все записи, которые связаны с полученным классом. В чём ошибка-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 16:07 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Garrick, Как задумывается: Мне возвращается один экземпляр книги, в котором если поле Authors, где находится 3 автора, как это и сделано в отдельно взятом экземпляре. Но мне из БД возвращается 3 одинаковых экземпляра, а нужен только один. Может что-то не так с Criteria? возможно, я неверно его использую или есть какие-нибудь альтернативы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 16:10 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
domestos123Garrick, Как задумывается: Мне возвращается один экземпляр книги, в котором если поле Authors, где находится 3 автора, как это и сделано в отдельно взятом экземпляре. Но мне из БД возвращается 3 одинаковых экземпляра, а нужен только один. Может что-то не так с Criteria? возможно, я неверно его использую или есть какие-нибудь альтернативы? есть поле Authors* ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 16:12 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
domestos123, а отношение точно многие ко многим в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 16:55 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Озверин, да. У каждого автора может быть несколько книг, но и у книги может быть несколько авторов. Разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 17:25 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
domestos123, Коллекция неверна? Тогда нафига тут json? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 18:59 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Petro123, JSON я передаю клиентской стороне ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 21:38 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
domestos123, Вам модно попробовать не по классу искать, а у класса взять id книги и достать книгу из базы. В книге полем будет список авторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 22:32 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
WebPrj, Хорошо, попробую сегодня вечером так. О результатах сообщу) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2019, 10:35 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
domestos123, если я всё правильно понял, то на SQL это выглядело бы так: Код: plsql 1.
попробуйте session.createSQLQuery() ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 09:07 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Garrickесли я всё правильно понял, то на SQL это выглядело бы так: Код: plsql 1.
in длительная операция, в данном примере её лучше заменить обычным join да и * лучше не использовать, заменить на явное перечисление полей ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:14 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
вадяGarrickесли я всё правильно понял, то на SQL это выглядело бы так: Код: plsql 1.
in длительная операция, в данном примере её лучше заменить обычным join да и * лучше не использовать, заменить на явное перечисление полей Это недоказуемо на уровне Hibernate. Надо смотреть как ведёт себя конкретная DBMS и какой генерит план и как быстро его исполняет. При выборе как написать SQL-query, я-бы придерживался некого общего видения простоты и понятности внутри dev-team. Если все участники code-review поняли что это и довольны - то можно оставить запрос вот в таком виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:37 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
вадяGarrickесли я всё правильно понял, то на SQL это выглядело бы так: Код: plsql 1.
in длительная операция, в данном примере её лучше заменить обычным join да и * лучше не использовать, заменить на явное перечисление полей Тоже считаю что нужно использовать join. Он не будет тогда все записи выбирать, а потом обрезать ненужные. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:53 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
вадяGarrickесли я всё правильно понял, то на SQL это выглядело бы так: Код: plsql 1.
in длительная операция, в данном примере её лучше заменить обычным join м....ну конечно же как обычно - нет. Как и сказал товарищ выше - надо смотреть план. К примеру, для постгрескуль in=inner join. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:59 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Озвериннадо смотреть планэто всегда полезно Озвериндля постгрескуль in=inner join.распространять один вариант на все , как бы ни есть хорошо. некоторые субд, к примеру, запрос в in выполняли многократно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:03 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
вадяОзвериннадо смотреть планэто всегда полезно Озвериндля постгрескуль in=inner join.распространять один вариант на все , как бы ни есть хорошо. некоторые субд, к примеру, запрос в in выполняли многократно.... оксес - не субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:29 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
вадяОзвериннадо смотреть планэто всегда полезно Озвериндля постгрескуль in=inner join.распространять один вариант на все , как бы ни есть хорошо. некоторые субд, к примеру, запрос в in выполняли многократно.... так это ты предложил один вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:35 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
mayton, У него в классе есть поле list где список сущностей по связи. Не понял зачем тут sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:40 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Озверинвадяпропущено... это всегда полезно пропущено... распространять один вариант на все , как бы ни есть хорошо. некоторые субд, к примеру, запрос в in выполняли многократно.... оксес - не субд. а кто говорил про акс? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 22:58 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Я нашел решение проблемы. Тема закрыта! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 01:42 |
|
Java Hibernate
|
|||
---|---|---|---|
#18+
Продублирую вопрос еще и здесь, чтобы новую тему не заводить: Java Hibernate JPA RedHat EX297 Коллеги, кто-нибудь сдавал сабж? https://www.redhat.com/en/services/training/ex297-retired-red-hat-certified-specialist-in-persistence-exam Из прочтения статьи не сложилось понимания, как это происходит фактически в российских реалиях. Существуют тест-центры (по аналогии с Pearson Vue для Oracle-овских экзаменов) или же сдается он-лайн как сертификация Spring? Заранее благодарю прошедших за отзывы. https://www.sql.ru/forum/1313744/java-hibernate-jpa-redhat-ex297?hl= ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2019, 18:04 |
|
|
start [/forum/topic.php?fid=59&fpage=26&tid=2121252]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 195ms |
0 / 0 |