Это правило находит ссылки на язык запросов WebLogic. Все ссылки на язык запросов WebLogic необходимо изучить и преобразовать для использования в WebSphere traditional и Liberty.
Элемент <weblogic-ql> задает запрос, использующий применяемое в WebLogic расширение языка запросов EJB 2.0 (EJB-QL). Стандартный язык EJB-QL используется в файле описания ejb-jar.xml, а расширения EJB-QL WebLogic используются в файле weblogic-cmp-rdbms-jar.xml. Упорядочение, функции агрегирования и подзапросы являются стандартными элементами запросов, однако могут использоваться и другие расширения, поэтому необходимо внимательно изучить все элементы <weblogic-ql>.
WebSphere Application Server также использует расширения языка EJB-QL, однако вместо того чтобы применять свой язык запросов, WebSphere Application Server добавляет функции упорядочения, агрегирования и подзапросов в синтаксис EJB-QL. Для добавления этих возможностей WebSphere Application Server расширяет синтаксис EJB-QL. Это значит, что любые функции EJB-QL и его расширения можно использовать в стандартном элементе <ejb-ql> файла ejb-jar.xml.
Преобразование orderbyРасширение языка запросов WebLogic orderby - это ключевое слово, которое применяется в сочетании с методом Finder, чтобы определить порядок результатов, возвращаемых в выборке. Допускается упорядочение по нескольким полям и возврат результатов, упорядоченных по возрастанию или по убыванию.
<weblogic-ql>select object(o) from MeetingAutoservice o where o.idInternAutoservice = ?1 orderby o.numberMeeting</weblogic-ql>
<ejb-ql>select object(o) from MeetingAutoservice o where o.idInternAutoservice = ?1 order by o.numberMeeting</ejb-ql>
Преобразование подзапросов и функции агрегирования
Расширение языка запросов WebLogic subquery позволяет встраивать запрос в блок WHERE основного запроса для возврата данных в основной запрос, отвечающих определенному условию, что позволяет еще больше ограничить набор извлекаемых данных. Расширение языка запросов WebLogic MAX возвращает максимальное значение указанного поля. В следующем примере показан подзапрос и функция агрегирования, а также то, во что они преобразуются в WebSphere Application Server:
<weblogic-ql>select OBJECT(o) from MeetingAutoservice o where o.idInternAutoservice=?1 AND o.meetingNumber = (select MAX(p.meetingNumber) from MeetingAutoservice p where p.idInternAutoservice = ?1)</weblogic-ql>
<ejb-ql>select OBJECT(o) from MeetingAutoservice o where o.idInternAutoservice=?1 AND o.meetingNumber = (select MAX(p.meetingNumber) from MeetingAutoservice p where p.idInternAutoservice = ?1)</ejb-ql>
Дополнительная информация об EJB-QL приведена в следующем разделе: