
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.07.2013, 11:42:10
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Чтобы выбрать данные из таблицы использовал такой запрос Код: java 1. после того, как у таблицы появились зависимые - количество повторяемых строк стало равно количеству записей в зависимых таблицах. На мой взгляд какое-то странное поведение. почему так происходит? пришлось писать так: Код: java 1. хотя всегда считал, что это одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 11:44:46
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Вторая строка запускае выборку. А первая нет. Какие-то детали ты опустил. Там тоже .createCriteria(Candidate.class).list() ? Какие конкретно запросы повторяются и какой маппинг на зависимости? Похоже что проблема N+1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 11:48:21
|
|||
|---|---|---|---|
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90, Когда используешь Criteria API в расчет берется конфигурация, всякие FeatchJoin, EagerJoin. Когда используешь hql, то используется только что написано в самом запросе (конфигурация не влияет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:08:45
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowicz Там тоже .createCriteria(Candidate.class).list() ? да, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:14:14
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
BlazkowiczКакие конкретно запросы повторяются и какой маппинг на зависимости?. BlazkowiczПохоже что проблема N+1. не исключено Код: 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. Код: 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. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:15:47
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90, Тогда какие-то важные детали здесь утеряны. Не должно быть особой разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:19:33
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
и с каким свойством проблема? vacancies или skills? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:20:11
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowicz, Если кандидату(с id==2) добавить 4(например) скилла, то количество кандидатов кандидатов c id==2 в выборке будет равно 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:25:59
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90Если кандидату(с id==2) добавить 4(например) скилла, то количество кандидатов кандидатов c id==2 в выборке будет равно 4. Потому-то хибер для EAGER делает OUTER JOIN. Покажи SQL log для обоих случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:38:30
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowicz, HQL [quote авторHibernate: select candidate0_.id as id1_1_, candidate0_.name as name2_1_, candidate0_.surname as surname3_1_, candidate0_.author_id as author7_1_, candidate0_.creation_date as creation4_1_, candidate0_.phone as phone5_1_, candidate0_.cv_url as cv6_1_ from candidate candidate0_ Hibernate: select user0_.id as id1_0_0_, user0_.name as name2_0_0_, user0_.surname as surname3_0_0_, user0_.password as password4_0_0_ from author user0_ where user0_.id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? [/quote] CRITERIA авторHibernate: select this_.id as id1_1_2_, this_.name as name2_1_2_, this_.surname as surname3_1_2_, this_.author_id as author7_1_2_, this_.creation_date as creation4_1_2_, this_.phone as phone5_1_2_, this_.cv_url as cv6_1_2_, user2_.id as id1_0_0_, user2_.name as name2_0_0_, user2_.surname as surname3_0_0_, user2_.password as password4_0_0_, skills3_.candidate_id as candidat1_1_4_, skill4_.id as skill2_2_4_, skill4_.id as id1_9_1_, skill4_.name as name2_9_1_ from candidate this_ left outer join author user2_ on this_.author_id=user2_.id left outer join candidate_skill skills3_ on this_.id=skills3_.candidate_id left outer join skill skill4_ on skills3_.skill_id=skill4_.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 12:46:28
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90, Тогда ты всё напутал в первом посте. Похоже что HQL не делает JOIN самостоятельно, если его не указать в запросе. Поэтому он делает SELECT from Candidate, а затем кучу дополнительных SELECT для skills, так как в маппинге указан fetch EAGER. Criteria API из EAGER делает OUTER JOIN. Об этом можно прочитать в мануале. Тут немного коментариев и ссылок. http://stackoverflow.com/questions/3516873/hql-fetch-join-collections-from-eager-table EAGER в маппинге это не самая лучшая практика. Потом его не возможно будет поменять на lazy в отдельных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 13:23:15
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowicz, вроде всё правильно написал: состояние бд: .createQuery("from Candidate").list(); результат: автор<list> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>2</id> <name>erwerwe</name> <surname>888888888888888888888888888888888888888888888888</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <skills> <id>1</id> <name>skill1</name> </skills> <skills> <id>2</id> <name>skill2</name> </skills> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>3</id> <name>John</name> <surname>Snow</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <date>2013-07-11T10:44:27.397+04:00</date> <phone>33-33-33</phone> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>4</id> <name>777</name> <surname>777</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>5</id> <name>777</name> <surname>777</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>6</id> <name>John</name> <surname>Snow</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <date>2013-07-16T12:30:42.727+04:00</date> <phone>33-33-33</phone> </element> </list> .createCriteria(Candidate.class).list(); результат: автор<list> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>2</id> <name>erwerwe</name> <surname>888888888888888888888888888888888888888888888888</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <skills> <id>2</id> <name>skill2</name> </skills> <skills> <id>1</id> <name>skill1</name> </skills> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>2</id> <name>erwerwe</name> <surname>888888888888888888888888888888888888888888888888</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <skills> <id>2</id> <name>skill2</name> </skills> <skills> <id>1</id> <name>skill1</name> </skills> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>3</id> <name>John</name> <surname>Snow</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <date>2013-07-11T10:44:27.397+04:00</date> <phone>33-33-33</phone> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>4</id> <name>777</name> <surname>777</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>5</id> <name>777</name> <surname>777</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>6</id> <name>John</name> <surname>Snow</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <date>2013-07-16T12:30:42.727+04:00</date> <phone>33-33-33</phone> </element> </list> P.S. это результат вызова getAll метода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 13:23:46
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
авторEAGER в маппинге это не самая лучшая практика. Потом его не возможно будет поменять на lazy в отдельных случаях. это временная мера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 13:34:29
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90вроде всё правильно написал: Тут 14572086 ты пишешь что Criteria приводит к нескольким подзапросам, тогда как в HQL такого нет. А вот тут: 14572553 - наоборот. HQL - куча запросов, Criteria - один запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 14:46:38
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowiczredwhite90вроде всё правильно написал: Тут 14572086 ты пишешь что Criteria приводит к нескольким подзапросам, тогда как в HQL такого нет. А вот тут: 14572553 - наоборот. HQL - куча запросов, Criteria - один запрос. перепроверил это HQL(.createQuery("from Candidate").list();): авторHibernate: select candidate0_.id as id1_1_, candidate0_.name as name2_1_, candidate0_.surname as surname3_1_, candidate0_.author_id as author7_1_, candidate0_.creation_date as creation4_1_, candidate0_.phone as phone5_1_, candidate0_.cv_url as cv6_1_ from candidate candidate0_ Hibernate: select user0_.id as id1_0_0_, user0_.name as name2_0_0_, user0_.surname as surname3_0_0_, user0_.password as password4_0_0_ from author user0_ where user0_.id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select skills0_.candidate_id as candidat1_1_1_, skills0_.skill_id as skill2_2_1_, skill1_.id as id1_9_0_, skill1_.name as name2_9_0_ from candidate_skill skills0_ inner join skill skill1_ on skills0_.skill_id=skill1_.id where skills0_.candidate_id=? Hibernate: select vacancies0_.vacancy_id as vacancy1_1_2_, vacancies0_.candidate_id as candidat2_4_2_, vacancy1_.id as id1_12_0_, vacancy1_.author_id as author5_12_0_, vacancy1_.creation_date as creation2_12_0_, vacancy1_.description as descript3_12_0_, vacancy1_.name as name4_12_0_, user2_.id as id1_0_1_, user2_.name as name2_0_1_, user2_.surname as surname3_0_1_, user2_.password as password4_0_1_ from candidate_vacancy vacancies0_ inner join vacancy vacancy1_ on vacancies0_.candidate_id=vacancy1_.id left outer join author user2_ on vacancy1_.author_id=user2_.id where vacancies0_.vacancy_id=? Hibernate: select vacancies0_.vacancy_id as vacancy1_1_2_, vacancies0_.candidate_id as candidat2_4_2_, vacancy1_.id as id1_12_0_, vacancy1_.author_id as author5_12_0_, vacancy1_.creation_date as creation2_12_0_, vacancy1_.description as descript3_12_0_, vacancy1_.name as name4_12_0_, user2_.id as id1_0_1_, user2_.name as name2_0_1_, user2_.surname as surname3_0_1_, user2_.password as password4_0_1_ from candidate_vacancy vacancies0_ inner join vacancy vacancy1_ on vacancies0_.candidate_id=vacancy1_.id left outer join author user2_ on vacancy1_.author_id=user2_.id where vacancies0_.vacancy_id=? Hibernate: select vacancies0_.vacancy_id as vacancy1_1_2_, vacancies0_.candidate_id as candidat2_4_2_, vacancy1_.id as id1_12_0_, vacancy1_.author_id as author5_12_0_, vacancy1_.creation_date as creation2_12_0_, vacancy1_.description as descript3_12_0_, vacancy1_.name as name4_12_0_, user2_.id as id1_0_1_, user2_.name as name2_0_1_, user2_.surname as surname3_0_1_, user2_.password as password4_0_1_ from candidate_vacancy vacancies0_ inner join vacancy vacancy1_ on vacancies0_.candidate_id=vacancy1_.id left outer join author user2_ on vacancy1_.author_id=user2_.id where vacancies0_.vacancy_id=? Hibernate: select vacancies0_.vacancy_id as vacancy1_1_2_, vacancies0_.candidate_id as candidat2_4_2_, vacancy1_.id as id1_12_0_, vacancy1_.author_id as author5_12_0_, vacancy1_.creation_date as creation2_12_0_, vacancy1_.description as descript3_12_0_, vacancy1_.name as name4_12_0_, user2_.id as id1_0_1_, user2_.name as name2_0_1_, user2_.surname as surname3_0_1_, user2_.password as password4_0_1_ from candidate_vacancy vacancies0_ inner join vacancy vacancy1_ on vacancies0_.candidate_id=vacancy1_.id left outer join author user2_ on vacancy1_.author_id=user2_.id where vacancies0_.vacancy_id=? Hibernate: select vacancies0_.vacancy_id as vacancy1_1_2_, vacancies0_.candidate_id as candidat2_4_2_, vacancy1_.id as id1_12_0_, vacancy1_.author_id as author5_12_0_, vacancy1_.creation_date as creation2_12_0_, vacancy1_.description as descript3_12_0_, vacancy1_.name as name4_12_0_, user2_.id as id1_0_1_, user2_.name as name2_0_1_, user2_.surname as surname3_0_1_, user2_.password as password4_0_1_ from candidate_vacancy vacancies0_ inner join vacancy vacancy1_ on vacancies0_.candidate_id=vacancy1_.id left outer join author user2_ on vacancy1_.author_id=user2_.id where vacancies0_.vacancy_id=? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 14:49:33
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90перепроверил Да, чего тут проверять? Теперь всё понятно. HQL сам по себе JOIN-ы не делает, если их явно не указать в запросе. Поэтому куча select-ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 14:51:17
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
на выходе(без повторений): авторThis XML file does not appear to have any style information associated with it. The document tree is shown below. <list> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>2</id> <name>erwerwe</name> <surname>888888888888888888888888888888888888888888888888</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <skills> <id>2</id> <name>skill2</name> </skills> <skills> <id>1</id> <name>skill1</name> </skills> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>3</id> <name>John</name> <surname>Snow</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <date>2013-07-11T10:44:27.397+04:00</date> <phone>33-33-33</phone> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>4</id> <name>777</name> <surname>777</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>5</id> <name>777</name> <surname>777</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> </element> <element xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidate"> <id>6</id> <name>John</name> <surname>Snow</surname> <author> <id>1</id> <name>author777</name> <surname>author777</surname> </author> <date>2013-07-16T12:30:42.727+04:00</date> <phone>33-33-33</phone> </element> </list> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 14:53:46
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowiczredwhite90перепроверил Да, чего тут проверять? Теперь всё понятно. HQL сам по себе JOIN-ы не делает, если их явно не указать в запросе. Поэтому куча select-ов. получается, что так. а нельзя CRITERIA сделать без join-ов? я просто думал, что все эти criteria, sql, hql самодостаточны и всё можно из них получить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 14:54:23
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
без их композиции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 14:56:04
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90а нельзя CRITERIA сделать без join-ов? Можно. Criteria.setFetchMode("skills", FetchMode.КАКОЙ_НАДА); Только возможно Eager в маппинге мешать будет. redwhite90 я просто думал, что все эти criteria, sql, hql самодостаточны и всё можно из них получить Слова знакомые, а что хотел сказать - не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 15:09:31
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
Blazkowiczredwhite90а нельзя CRITERIA сделать без join-ов? Можно. Criteria.setFetchMode("skills", FetchMode.КАКОЙ_НАДА); Только возможно Eager в маппинге мешать будет. спасибо redwhite90 я просто думал, что все эти criteria, sql, hql самодостаточны и всё можно из них получить Слова знакомые, а что хотел сказать - не понятно.[/quot] имелось ввиду, что используя отдельно только sql(либо hql, либо criteria) можно сделать любой запрос к БД. То есть мощность этих инструментов одинаковая, только иногда в hql надо меньше буков писать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2013, 15:14:21
|
|||
|---|---|---|---|
|
|||
Hibernate. Разница между запросами |
|||
|
#18+
redwhite90имелось ввиду, что используя отдельно только sql(либо hql, либо criteria) можно сделать любой запрос к БД. То есть мощность этих инструментов одинаковая, только иногда в hql надо меньше буков писать... Не совсем так. Criteria API нужен там где запрос приходится строить динамически. Обычно это поиск с кучей всевозможных опциональных параметров. HQL писать проще, но он совершенно статичный. Из кода его стоит выносить в Named Query. А dynamic association fetching это просто раздел мануала, который стоит освоить как для HQL, так и для Criteria API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2128981]: |
0ms |
get settings: |
12ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
40ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
146ms |
get tp. blocked users: |
2ms |
| others: | 329ms |
| total: | 588ms |

| 0 / 0 |
