Responding to Chris Seidel:
> On Thu, 23 Aug 2012 14:27:41 +0200, Patrick Roemer
> <
sang...@netcologne.de> wrote:
>
>>> from User u, IN(u.roles) r where r in (?1)
>>
>> Von der Spec her duerfte das eigentlich nicht gehen.
>
> Ist auch ï¿œberaus seltsam, hab ich bisher nie gesehen.
Die collection member declaration mit "IN"? Das ist im Prinzip
aequivalent zu "from User u join u.roles r".
>> - "r" ist kein field path.
>> - Dein "?1" ist Deiner Beschreibung nach nicht single-valued, muesste
>> also "?1" statt "(?1)" sein.
>
> Ja, stimmt. Interessiert Hibernate aber nicht, da ist es wohl gnï¿œdig...
Was sich insbesondere bei dem "r" gluecklich fuegt... Mir ist nicht ganz
klar, warum die Spec da einen field path verlangt.
> Ergo ist member of der einzige Weg, die @CollectionOfElements via Set
> abzufragen?
Duerfte auch nicht gehen.
collection_member_expression ::=
entity_or_value_expression [NOT] MEMBER [OF]
collection_valued_path_expression
Linke Seite darf nicht collection valued sein. "?1 member u.roles" fuer
einen Set-Parameter geht also nicht.
> Alternativ das Set auflï¿œsen und dann: u.roles = ?1 OR u.roles =?2 etc?
Noe, da stimmen ja die Typen der beiden Seiten nicht ueberein.
"?1 member u.roles or ?2 member u.roles or ..."
Die sinnigste Variante scheint schon die collection member declaration
zu sein, aber die duerfte nicht portabel sein.
>> in_expression ::=
>> {state_field_path_expression | type_discriminator}
>
> Hm... type_discriminator...
>
> Man kï¿œnnte also einen Type abfragen?
>
> Ich meine jetzt den Type-Discr. bei Inheritance.
Yep. "from User u where type(u) in (Manager, Administrator)"
Viele Gruesse,
Patrick