Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, Join не связанных напрямую таблиц. / 12 сообщений из 12, страница 1 из 1
25.04.2012, 13:52:48
    #37770486
C4Et4uK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Имеются таблицы А и В ссылающиеся по внешнему ключу на таблицу С, но напрямую друг с другом не связанные.
Вопрос.Можно ли в хибернейте сделать сложный запрос из этих двух таблиц?
...
Рейтинг: 0 / 0
25.04.2012, 14:04:52
    #37770516
C4Et4uK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Связь через общий FK с таблицей С
...
Рейтинг: 0 / 0
25.04.2012, 14:06:25
    #37770519
C4Et4uK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Или проще сделать в обычном SQL?
(Жаль редактировать сообщения нельзя)
...
Рейтинг: 0 / 0
25.04.2012, 14:22:21
    #37770561
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
В хибернейта запрос можно сделать 3мя способами
HQL, Criteria API и SQL (можно ещё JPLQ но, по логике, этот тот же HQL)
Так вот в HQL и Criteria API можно сделать запрос, только если вы эти сущности свяжете через ассоциацию в коде (например ManyToMay + JoinTable)
В SQL можете и без ассоциации сущностей. Хибер умеет и из SQL сущности собрать.
...
Рейтинг: 0 / 0
25.04.2012, 14:29:19
    #37770585
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Лично мое мнение, что и HQL и Criteria - это конечно с первого взгляда круто, но практически трудноприменимо, за исключением редких случаев. Предполагалось что HQL должен упростить написание запросов и придать им гипотетическую переносимость между базами, а в итоге получается что я имея опыт на SQL, должен изучить еще один диалект и по каждой мелочи лазить в гугл с запросами "как сделать having в hql " и т.п чтобы не ошибится(ни разу не получилось написать запрос с первого раза). С другой стороны я всегда предварительно тестирую запрос на СУБД во время разработки и не вижу никакого бенефита по его переводу на hql.
Так что мое скромное ИМХО - Hql рулит для CRUD ну и еще может простецкий join по коллекции, все остальные запросы - нативный sql + result Transformer - гораздо проще, быстрее и понятнее.
...
Рейтинг: 0 / 0
25.04.2012, 14:41:46
    #37770622
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
забыл ник,
+1
правда, ты покусился на святое - на ОРМ :)
...
Рейтинг: 0 / 0
25.04.2012, 14:59:02
    #37770675
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Petro123забыл ник,
+1
правда, ты покусился на святое - на ОРМ :)

Неправда) ОРМ подразумевает под собой маппинг между реляционной моделью и объектной - чем я и стараюсь пользоваться, оба подхода(basic CRUD и SQL+transformer) - именно это и делают, другое дело что оптимизации типа First-level cache и т.п. во втором случае- идут лесом - это да, но это по моему мнению к ОРМ прямого отношения не имеет, это фича хибернейта, да и по практике - если ты спустился до написания nativeSql - это уже значит, что запрос нетривиальный, и скорее всего кэшировать что-то не имеет особого смысла, так что наш подход вобрал в себя лучшее из двух миров. Хотя, повторюсь, это лишь мое мнение.
...
Рейтинг: 0 / 0
25.04.2012, 15:10:12
    #37770728
C4Et4uK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Угу в итоге решил проблему Native запросом.Просто весь проект крутится на hql и одинокий Native запрос смотрится как-то странно)
...
Рейтинг: 0 / 0
25.04.2012, 15:13:31
    #37770738
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
C4Et4uKУгу в итоге решил проблему Native запросом.Просто весь проект крутится на hql и одинокий Native запрос смотрится как-то странно)
а так
Код: java
1.
select a, b from A a B b C c where a.c.id = b.c.id


ну или как то так
...
Рейтинг: 0 / 0
25.04.2012, 15:14:46
    #37770745
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Michael PonomarevC4Et4uKУгу в итоге решил проблему Native запросом.Просто весь проект крутится на hql и одинокий Native запрос смотрится как-то странно)
а так
Код: java
1.
select a, b from A a B b C c where a.c.id = b.c.id


ну или как то так

точнее

select a, b from A a, B b where a.c.id = b.c.id
...
Рейтинг: 0 / 0
25.04.2012, 17:23:51
    #37771104
C4Et4uK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
Получается запрос к 3ем таблицам?Таблицы сильно не маленькие...
Или я не прав?
...
Рейтинг: 0 / 0
25.04.2012, 19:40:04
    #37771312
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate, Join не связанных напрямую таблиц.
C4Et4uK,

Сложно сказать сколько таблиц будет участвовать в выборке, твоих сущностей никто не видел
А сколько сейчас таблиц в нативном запросе ?
И что индексов по FK нет что ли ?

Ты бы привел код сущностей и нативного запроса в студию
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, Join не связанных напрямую таблиц. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]