Hallo!
Ich habe folgende unidirektionale Beziehung zwischen den Tabellen Person und Memos
<class name="myPackage.Person" table="Person">
<id name="pid" type="int">
<column name="pid" />
<generator class="assigned" />
</id>
...
<set name="memos" cascade="all" lazy="true">
<key column="mpid"/>
<one-to-many class="myPackage.Memos"/>
</set>
</class>
<class name="myPackage.Memos" table="Memos">
<property name="mpid" type="int">
<column name="mpid" />
</property>
<property name="memkz" type="string">
<column name="memkz" length="7">
</column>
</property>
mpid enthaelt die Person-Id des Memos.
Ich will nun folgende Query stellen:
"Gib mir alle Personen mit id<10 ODER memos.bezeichnung="test" "
, d.h ich will alle Personen mit einer Id<10, unabhaengig davon, ob diese ueberhaupt ein Memo haben, und die Personen mit einem "test"-memo.
Ich benutze die DetachedCriteria-Api:
dsadrCriteria.createAlias("memos","mem").add(Restrictions.disjunction().add(Restrictions.le("pid", 10)).add(Restrictions.eq("mem.memkz", "test")));
-> das liefert mir nur die Personen mit test-memo + die Personen mit id<10, die ueberhaupt ein memo besitzen, nicht jedoch die Personen mit id<10, die kein Memo besitzen.
Ich brauche warhscheinlich ein left-join auf die memos,
mit
personCriteria.createAlias("memos","mem", Criteria.LEFT_JOIN). ...
funktioniert's aber auch nicht.
Was mache ich falsch?
Gruss,
gizeh
|