Hallo,
bin neu bei nHibernate (1.2) und habe eine generelle Frage. Ist es möglich, folgendes Szenario rein über Mapping-File Einstellungen zu lösen und falls, wie?
Folgende DB (SQL-Server) Struktur:
1 Tab "Rules"
PKRule
2 Tab "ExcludeRules"
FKRule
FKSystem
3 Tab "System"
PKSystem
Ich möchte nun in meinem Objekt "System" ein Property "AllowedRules" anbieten, welche zu einem System (PKSystem) alle Einträge aus Rules anzeigt - jedoch nicht diese, welche in ExcludedRules zu dieser PKSystem enthalten sind. Hierbei wollte ich mir ein eigenes Object "ExcludedRules" sparen und das ganze auch nicht per Code lösen.
Mein erster Ansatz war über die "where" Klausel (entweder SubSelect, oder wie auch immer als join) des Bags, aber irgendwie krieg ich das nicht hin.
Hier grob der Denkansatz zu der "System" Mapping:
<bag generic="true" cascade="all" lazy="false" inverse="true"
where="PKRule NOT IN
(SELECT FKRule
FROM ExcludedRules
WHERE (FKSystem =?))"
name="ValidRules" table="Rules"
access="nosetter.pascalcase-underscore">
<key column="PKRule" />
<one-to-many class="RuleBase, BusinessLayer" />
</bag>
Ist es möglich diese WHERE Klausel zum laufen zu bringen?
Gibt es hier eine bessere Lösung, dies über das Mapping File zu lösen? (wie gesagt, möchte jedoch keine weiteren Objekte, oder das ganze per Code lösen)
Bin für jeden Hinweis dankbar!
Gruß
Tom
|