|
|
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
доброе утро собственно есть общий вопрос : как вернуть что то произвольного типа ? Код: java 1. 2. 3. Это вернет массив из двух объектов вида List<Object[]> ... sql будет такой Код: java 1. 2. 3. 4. 5. 6. в java для работы с orm и базами нет ни пар ни каких то абстракций для результата выполнения произвольного запроса?! можно как в ejb указать dto класс ? или как минимум обвязка из SqlResultSetMapping http://docs.oracle.com/javaee/5/api/javax/persistence/SqlResultSetMapping.html Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 09:01 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1, JPQL спеку надо смотреть. Но HQL точно умеет: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html 14.6. The select clause Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 09:10 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
я имел ввиду Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 09:29 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1я имел ввиду Что это принципиально меняет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 09:31 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, JPQL спеку надо смотреть. Но HQL точно умеет: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html 14.6. The select clause Код: sql 1. Да я про это знаю ... я как раз не про внутреннее преобразование в jpql а как бы сказать внешнее ...по типу SqlResultSetMapping - когда мы говорим что ответ нужно положить в структуру вида (и указываем вид ) но для примеров с SqlResultSetMapping - Это оверхад с бойлерплейт кодом Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. http://stackoverflow.com/questions/13012584/jpa-how-to-convert-a-native-query-result-set-to-pojo-class-collection может есть что то типа Project Lombok ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 09:33 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
в Hibernate очень удобная штука есть - ResultTransformers Код: java 1. 2. 3. результиркющий бин - очычный pojo класс, не требующий никаких аннотаций, только геттеры и сеттеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 10:20 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
http://www.thoughts-on-java.org/result-set-mapping-complex-mappings/ Код: java 1. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: java 1. 2. 3. 4. 5. 6. 7. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 16:50 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
вопрос тогда такой - где хранить эти sql запросы ? в коде или вxml в базе ? Код: java 1. где вы их храните ? или в в виде хранимых процедур в БД ? тогда как вы их исполняете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 17:04 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
http://www.thoughts-on-java.org/result-set-mapping-hibernate-specific-mappings/ для hibernate Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 17:20 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Если уже определился что все будет на sql / plsql где хранить исходники этих самых sql запросов ? относительно кода их исполнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 17:25 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1 где хранить исходники этих самых sql запросов ? относительно кода их исполнения? в коде. Т.к. это тоже код, только на SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 18:07 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1 где хранить исходники этих самых sql запросов ? относительно кода их исполнения? в коде. Т.к. это тоже код, только на SQL т.е если нужно подправить условии в sql строке - нужно пересбрать весь код на вашем проекте ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 08:54 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1, Во первых большие проекты модульные. Во вторых, вопрос: Если вам надо поправить условие if зарплата > 2 то вам нужно будет пересобирать весь проект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 09:25 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Хоть аннотации и позволяют, но хранить в запросы в коде очень неудобно. Хотя бы из-за кавычек. Я лично всё, что занимает более одной строки, складываю в xml ресурсы. Вот, например, именованный hibernate запрос, возвращающий не-entity данные Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Использовать чистый jpql в данном случае не получится, так как там возможно трансформировать результаты только в entity. Кроме того, подобные запросы не требуют никакого дополнительного кода (addScalar), пример я привел выше. Таким образом, все метаданные собраны в одно место и положены отдельно от кода, что довольно удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 09:37 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
>Изначально мой вопрос более философский навеяно темами 6! летней давности Hibernate performance — Ковальски, варианты?! http://javatalks.ru/topics/32234?page=1 http://javatalks.ru/topics/19539?page=1 и этим видео [youtube= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 09:45 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
ivanra, Если он большой, то все индивидуально. Значит он должен в бд сидеть. Во вьюшке. Мы же про CRUD. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 10:01 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ваш опыт ... да хранить либо в xml либо в ввиде plsql процедур в БД (как делаю сейчас) просто еще раз - хибернейт , jpa, orm , crud это все не очень удобно ... :(? долго , как в разработке так и в поддержке ... Мнимость удобства crud и orm - слабый контроль над генерируемым sql и огромный набор знаний 1) отличное знание и понимание sql 2) отличное знание того как работает Хибер (как джоинит , стоит запросы итд ) Нельзя просто так взять и использовать Хибер ! Вот мой пример в противовес тому что обычно приводят в книгах ! ( объектная модель : автор- книги - адрес ) я приду другой контр пример : попробуйте правильно составить entity модель и написать когда в таблицах есть дерево объектов! Employee - сотрудник , есть связь с отделом и есть коллекция подчиненных и связь с руководителем Самое простое всего три таблицы : Нужно вытащить сотрудника по его id через jpql или критериа апи и вызвать его метод toString() есть таблицы : Department - отделы : Employee - сотрудник , есть связь с отделом и есть коллекция подчиненных и связь с руководителем Shift - время прихода /ухода сотрудника на работу Проблемы : 1 берем простой подход через spring data jpa Repository - есть метод findOne Код: java 1. 2. 3. 4. 5. 6. Пишем тест Код: java 1. 2. 3. 4. 5. 6. 7. 8. получаем Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. и Код: plsql 1. 2. почему? потому что у Employee fetch = FetchType.LAZY меняем Код: java 1. 2. получаем все ок ! но при этом лишний запрос ... теперь рассмотрим классический код EmployeeServiceImpl PersistenceContext Код: 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. та же ошибка !!!!!! Повторяю я просто хочу запросить пользователя ... без его коллекций ?! !!! и вызвать public String toString() { return "Employee{ вся засада в простом : employeeId инициализируется через прокси и ждет когда его дернут ... даже если нам нужно лишь проверить id а если у нас транзакция закрылась - вообще беда !!! Исходные данные Код: plsql 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. 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. Код: sql 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. Код: 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. Код: 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. Для всех у кого есть желание по изучать как хибернейт делает прокси и стоит запросы по коду - исходники для mysql приложил ... играться можно всеми параметрами + Код: java 1. 2. 3. 4. 5. еще раз проблематика - получить сотрудника вывести его на печать ... получить сотрудника и список его подчиненных получить сотрудника и список его подчиненных и ссылку на его начальника итд Код для теста : Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 10:36 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1Мнимость удобства crud и orm много букв не читал. Ты на святое посягнул что ли? ))). Тут же эта тема через раз. А ты, насколько знаю - любишь спринг\орм\хибер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 10:42 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1просто еще раз - хибернейт , jpa, orm , crud это все не очень удобно ... :(? долго , как в разработке так и в поддержке ... Мнимость удобства crud и orm - слабый контроль над генерируемым sql и огромный набор знаний А вот возьми и напиши всё на JDBC с транзакциями, кешированием, кучей ассоциаций и потом вместе посмеёмся на сколько "проще" получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 11:16 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1, с одной стороны пишешь авторПовторяю я просто хочу запросить пользователя ... без его коллекций ?! !!!, а с другой - вот такой код Код: java 1. 2. 3. 4. 5. 6. 7. вот же они, коллекции (employee.getEmployees(), employee.getShifts()). employee выведется на консоль без вопросов, независимо от жадных и ленивых связей, а вот дальше - в зависимости от жадности метода employeeRepository.findOne ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 11:32 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1Мнимость удобства crud и orm много букв не читал. Ты на святое посягнул что ли? ))). Тут же эта тема через раз. А ты, насколько знаю - любишь спринг\орм\хибер. да и еще как люблю :) на задчках типа crud вытащи все из базы вот тебе пример ... просто в очередной раз 19285319 решил проверить что же там такое генерит Хибер взял не простой пример - дерево сотрудников и пришел а тихий ужас ! поднял пару старых 2010 года тем - посмотрел что новое появилось ... посмотрел видео .... ссылки все тут скинул ... много букв не читал. - я бы попросил - потестить попробовать позапускать ... то что сейчас представляет из себя Хибер - полный садоом ... реально потом обдало холдным .... поясню : 1) модель правильную опиши ... а что если иногда нужно делать так а потом так (а модель то описывает исключительно одно поведение - она не гибкая , каскады , null значения , Lazy объектов и коллекций) 2) после этого начинай писать запросы на jpql | критериях 3) после этого погружайся в Мир увлекательного перфоманса и оптимизиции (101 трюк который должен знать каждый Хибер разработчик) ссылки я привел в топике . (как кешировать jpql | критериях запросы , через граф апи, через кеши, через хинты итд , ) - нужно обязательно знать Вместо того чтобы : 1) написать хранимку 2) построить ее план (оптимизировать ее в БД) 3) Вызвать из java кода - и каким то образом замапить на объект - или коллекцию ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 11:59 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1 то что сейчас представляет из себя Хибер - полный садоом ... обычное дело. Ты познаёшь Мир и тебя шатает из стороны в сторону. Выше сказали - сделай полный цикл примера без ОРМ и тогда у тебя наступин нирвана. Просто одна критика одной стороны неконструктивна. Нужно as is to be - во все времена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 12:07 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum13) Вызвать из java кода - и каким то образом замапить на объект - или коллекцию ...Ярые противники Hiber'а так и не раскрыли тему мэппинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 12:25 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
UsmanAtum13) Вызвать из java кода - и каким то образом замапить на объект - или коллекцию ...Ярые противники Hiber'а так и не раскрыли тему мэппинга Я как раз не противник ... я ярый сторонник ... просто мне не очень нравится современный подход к решению ОРМ проблемы . Я привел простой пример ... Да я ищу Серебряную пулю - мне нужен компромисс ... И Да - Писать лапшу на jdbc это оверхед ... ДА мы пошли по верному пути - декларативный подход обернули метод @Transactional - введя Аспект - прокси и это правильно ... код стал чище ... но потом свернули куда то не туда и вместо одного кода из спагетти пишем другой из спегетти аннотаций - декларативный ... вот еще раз пример : http://www.thoughts-on-java.org/result-set-mapping-complex-mappings/ Код: java 1. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: java 1. 2. 3. 4. 5. +нужно добавить кеширование запросов , кеширование результатов , хинты итд ... и где тут плюс ? А да если делать через hql |jpql - Это будет не один запрос - а + n запросов для получения доп данных по модели ... с которыми также еще нужно разбираться и автоматизировать ... и где плюсы? ткните носом? А да - совсем забыл Еще пара вопросов : 1) удаление - через Хибер - чтобы просто выполнить delete - нужно создать темповую таблицу вставить туда id удаляемой записи - потом удалить ... а если нужно удалить n записей ? как делать корректный батч на удаление ? 2) обновить поле - нативно update . а через орм - нужно вытащить весь объект ( + все коллекции у него если итд ) потом сохранить ... 3) А да еще нельзя что то делать с самим объектом просто так ... и что то в нем менять ... нужно всегда его брать из базы ... все время помнить про жизненный цикл объекта (персист , аттац , детач, мердж, флеш ) - не слишком много ? (помнить про корректность хешкода и иквался про иммутабельность в хешмапах итд ... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 14:17 |
|
||
|
jpql как вернуть min max в одном запросе ?
|
|||
|---|---|---|---|
|
#18+
Atum1, все эти аннотации и запросы прямо в коде хороши для учебных целей и простейших случаев. Когда они разрастаются, гораздо удобнее работать с ними в ресурсных файлах. Ну и конечно, если есть возможность спускаться от jpa к hibernate/eclipselink/etc. Там гораздо больше возможностей. Например, положительный ответ на доп.вопросы - в hibernate (hql) все crud-запросы работают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2016, 20:40 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=94&tid=2123964]: |
0ms |
get settings: |
4ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 328ms |

| 0 / 0 |
