Hallo zusammen,
ich steh vor einem Problem im Zusammenhang mit Hibernate 3.2 und Criterias.
Ich versuche folgende SQL Query mittels Criterias im Hibernate umzusetzen,
aber ich bekomm's einfach nicht zum laufen. Es geht hier vor allem um die Joins und die where Klausel, in der sich ein "or" befindet.
Code:
select * from trov_travelinfo
join trov_companylocation company1 on trov_travelinfo.trv_start_companyloc_id = company1.colo_id
join trov_companylocation company2 on trov_travelinfo.trv_return_companyloc_id = company2.colo_id
where company1.colo_name like 'ABC%'
or company2.colo_name like 'XYZ%'
Das Problem ist, das ich das "or" einfach nicht hinbekomme.
Ich erzeuge mir für die beiden companies zwei critierias,
denen ich jeweils eine Disjunction hinzufüge.
Allerdings setzt mir Hibernate dann in der where Klausel ein
"and" (ist eigentlich klar, da es zwei Criterias mit jeweils eigenem Criterion sind).
Hier das Bsp. generiert von Hibernate:
Code:
from TROV.TROV_TRAVELINFO this_
inner join TROV.TROV_COMPANYLOCATION trovcompan3_ on this_.TRV_START_COMPANYLOC_ID=trovcompan3_.COLO_ID
inner join TROV.TROV_COMPANYLOCATION trovcompan2_ on this_.TRV_RETURN_COMPANYLOC_ID=trovcompan2_.COLO_ID
where (lower(trovcompan2_.COLO_NAME) like ?) and(lower(trovcompan3_.COLO_NAME) like ?) ) where rownum <= ?
Hier auch noch der zugehörige Java Code:
Code:
Criteria queryCriteria = session.createCriteria(TrovTravelInfo.class);
Criteria subCriteria = queryCriteria.createCriteria("companyLocationStart");
Disjunction disjunction1 = Restrictions.disjunction();
disjunction1.add(Restrictions.ilike("name", "ABC%"));
subCriteria.add(disjunction1);
subCriteria = queryCriteria.createCriteria("companyLocationReturn");
Disjunction disjunction2 = Restrictions.disjunction();
disjunction2.add(Restrictions.ilike("name", "XYZ%"));
subCriteria.add(disjunction2);
Vielleicht kann mir einer von Euch helfen, wie man mittels Criterias obige SQL Abfrage hinbekommt.
In jedem Falle Danke für Eure Mühe
Grüße
Anton