"ЭТО МОЙ SQL, КОТОРЫЙ Я ХОЧУ ПРЕОБРАЗОВАТЬ В CRTIERIA:
выберите be.* из BlogEntry, чтобы присоединиться к блогу b на be.blog=b.id присоединиться к подписчику f на b.id=f.blogId, где be.publishStatus='published' и be.secured=false и f.user знак равно union select be1.* from BlogEntry be1 join SecureUser s на be1.id=s.blogEntryId join User u на s.userProfile=u.userProfile и u.id=? упорядочить по дате публикации по описанию";
Привет, народ. я пытался использовать HQL и собственный SQL для выполнения вышеуказанного запроса, и я был разочарован на каждом шагу, по большей части потому, что выполнение UNION очень неудобно в Hibernate. даже если вы попробуете SQLQuery, у вас все равно будет весь беспорядок в установлении ваших отношений сущностей, будучи ВЫНУЖДЕННЫМ для включения каждого отдельного атрибута каждого подкласса, на который ссылается SQL. это оказывается полной болью, чтобы пройти мимо.
Итак, я перехожу к возможному решению запроса критериев, но я думаю, что мне нужна помощь. приведенный ниже запрос отлично работает в рабочей среде MySQL и быстр как молния. горб, который я пытаюсь преодолеть с запросом критериев, заключается в том, что некоторые из моих отношений сущностей определяются ссылками внешнего ключа в таблицах, а некоторые - нет. когда они ЕСТЬ, я могу, конечно, сделать что-то вроде этого (который оценивает часть моего запроса перед UNION):
ExtendedDetachedCriteria entryDetachedCriteria = extendedDetachedCriteria.forClass(BlogEntry.class); entryDetachedCriteria.createAlias ("blogEntry", "blogEntry"); entryDetachedCriteria.createAlias("blogEntry.blog", "blog");
и тд и тп...
ОДНАКО, когда я присоединяю данные по-другому, как в этой части SQL:
выберите be1.* из BlogEntry be1 join SecureUser на be1.id=s.blogEntryId (фактическая связь внешнего ключа не определена в таблицах, сущности SecureUser просто помечаются соответствующим идентификатором BlogEntry при их создании)
как мне написать запросы критериев иначе, чем показано выше?
я понимаю, что подобные вопросы - это сплошная боль, чтобы разобраться, если вы еще не по колено в попытках решить - пожалуйста, извините за запутанность вопроса, который я задаю. я был бы глубоко признателен за любое руководство, которое кто-то мог бы предложить, даже если это «соберись с гибернацией, тупица!». вроде застрял на данный момент.