Ta reguła wykrywa odwołania do języka zapytań produktu WebLogic. Należy przejrzeć wszystkie odwołania do języka zapytań produktu WebLogic i odpowiednio przekształcić pod kątem użycia w tradycyjnym serwerze WebSphere i serwerze Liberty.
Element <weblogic-ql> określa zapytanie, które zawiera specyficzne dla produktu WebLogic rozszerzenie języka EJB 2.0 Query Language (EJB-QL). Standardowe funkcje języka EJB-QL są używane w deskryptorze wdrażania ejb-jar.xml, a rozszerzenia języka EJB-QL produktu WebLogic są używane w pliku weblogic-cmp-rdbms-jar.xml. Funkcje porządkowania, agregujące i podzapytania są zwykle używane w zapytaniach, ale ponieważ mogą być także używane inne rozszerzenia, zawsze należy uważnie sprawdzić wszystkie elementy <weblogic-ql>.
Serwer WebSphere Application Server także rozszerza funkcje języka EJB-QL, ale zamiast definiować oddzielny język zapytań serwer ten udostępnia funkcje porządkowania, podzapytań i agregujące ze składnią języka EJB-QL. Serwer WebSphere Application Server rozszerza składnię języka EJB-QL, aby uwzględnić te rozszerzenia. Oznacza to, że można używać języka EJB-QL i jego rozszerzeń w standardowym elemencie <ejb-ql> w pliku ejb-jar.xml.
Odwzorowanie słowa kluczowego orderbyRozszerzenie orderby języka zapytań produktu WebLogic jest słowem kluczowym, które współpracuje z metodą Finder w celu określenia porządku wyników zwracanych z dokonanych wyborów. Istnieje także możliwość porządkowania według wielu pól i określenia porządku zwracanych wyników (rosnący lub malejący).
<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>
Odwzorowanie podzapytań i funkcji agregujących
Rozszerzenie podzapytania języka zapytań produktu WebLogic umożliwia osadzenie zapytania w klauzuli WHERE głównego zapytania. W ten sposób zwracane dane mogą zostać użyte w głównym zapytaniu jako warunek bardziej szczegółowo ograniczający dane do pobrania. Rozszerzenie MAX języka zapytań produktu WebLogic zwraca maksymalną wartość określonego pola. Ten przykład przedstawia podzapytanie oraz funkcję agregującą i jej odwzorowanie na potrzeby produktu 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>
Więcej informacji na temat EJB-QL można znaleźć w następującym temacie: