Предположим, у меня есть большой запрос, сгенерированный Hibernate, с CROSS JOIN, который влияет на производительность:
SELECT studyt0_.abbreviation AS col_0_0_,
userst2_.user_name AS col_1_0_,
recallst3_.id AS col_2_0_,
recallst3_.recall_date AS col_3_0_,
recallst3_.created_date AS col_4_0_,
(SELECT lookupt8_.description
FROM PUBLIC.answers_t answerst5_
CROSS JOIN PUBLIC.activity_questions_t activityqu6_
CROSS JOIN PUBLIC.activities_t activities7_
CROSS JOIN PUBLIC.lookup_t lookupt8_
WHERE lookupt8_.id = activities7_.activity_category_id
AND activities7_.id = activityqu6_.activity_id
AND activityqu6_.id = answerst5_.activity_question_id
AND activityqu6_.question_id = 1
AND answerst5_.event_id = eventst4_.id) AS col_5_0_,
(SELECT activities11_.activity_title
FROM PUBLIC.answers_t answerst9_
CROSS JOIN PUBLIC.activity_questions_t activityqu10_
CROSS JOIN PUBLIC.activities_t activities11_
etc
Это связано с неявными объединениями , которые есть в нашем HQL,насколько я понимаю.
(select l.description from AnswersT ans, ActivityQuestionsT aq, ActivitiesT a, LookupT l " +
"where l.id=a.lookupT.id and a.id=aq.activitiesT.id and aq.id=ans.activityQuestionsT.id and aq.questionsT.id=1 and ans.eventsT.id=e.id) as category, " +
Вопрос: Есть ли способ быстро избавиться от соединений CROSS и заменить их на INNER JOIN, не переписывая весь запрос, который очень велик? Есть ли какое-нибудь решение для конфигурации?