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?






_________________________________________________________________

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to