Hallo, mein Object-Modell ist voll von abstrakten datentypen und
daher habe ich fast nur CompositeUserTypes. Ich kriege nicht
raus wie ich eine Collection von CompositeUserType abfragen
kann. Hier ist ein Beispiel
Code:
<class name="eg.Role" ...>
...
<property name="simpleId" type="II">
<column name="simpleId_root" sql-type="VARCHAR" length="255"/>
<column name="simpletId_extension" sql-type="VARCHAR" length="255"/>
</property>
<set name="id" table="Role_id" lazy="true" access="eg.WrappingSetAccessor" sort="unsorted" inverse="false" batch-size="1" outer-join="auto" optimistic-lock="true">
<key column="Role_INTERNAL_ID" on-delete="noaction"/>
<element type="II" not-null="false" unique="false">
<column name="root" sql-type="VARCHAR" length="255"/>
<column name="extension" sql-type="VARCHAR" length="255"/>
</element>
</set>
...
</class>
Dabei genuegt es zu sagen dass "II" ein CompositeUserType ist mit
den Properties "root" und "extension". Ich kann den einfachen fall
(simpleId) ganz einfach abfragen:
from eg.Role as role where role.simpleId.extension='test'
daher weiss ich dass der II CompositeUserType funktioniert. Ich
weiss auch dass ich das Set abfragen kann:
from eg.Role inner join role.id
Aber wenn ich versuche nach einem bestimmten "id" element zu
suchen, dann geht es nicht:
from eg.Role as role inner join role.id as roleid where roleid.extension='test'
Der fehler ist "Invalid path: 'roleid.extension'"
Hat jemand hier ein Beispiel wie man eine Join abfrage an eine
Collection eines CompositeUserTypes formuliert? Was mache ich
falsch? Geht das ueberhaupt?
Vielen Dank.