I have a class mapped as follows... <class name="equipment"
table="MSF600"> <id name="equipNo"
column="EQUIP_NO"/> <map name="nameplate"
table="MSF6A4" outer-join="true" fetch="join"> <key
column="EQUIP_NO"/> <map-key column="ATTRIB_NAME"
type="string"/> <element column="ATTRIB_VALUE"
type="string"/> </map> </class> The map collection allows me to
perform queries on the equipment as follows... from equipment where
nameplate["TARIFF"] not in ('RU', 'BG') This works fine up until
I want to do a query like this... from equipment where nameplate["TARIFF"] is
null or nameplate["TARIFF"] not in ('RU', 'BG') The problem
happens because hibernate performs an implicit inner join with the MSF6A4 table when it
detects a nameplate[""] in the where clause. If the "TARIFF" nameplate
doesn't exist, the join will not match and so no results will be returned. I know I
can use... from equipment where "TARIFF" not in indices(nameplate) but still
doesn't work in a combined where clause like this.. from equipment where
"TARIFF" not in indices(nameplate) or nameplate["TARIFF"] not in
('RU', 'BG') because as soon as the nameplate["TARIFF"] appears,
hibernate does the implicit inner join to MSF6A4 again and finds no results. I think my
problem would be solved if I could force hibernate to perform an outer-join on the MSF6AF
table. Is this possible? Is there some other way to get this to work?
_________________________________________________________________
Show replies by date