-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: "dynamische einschränkung" bei "one-to-many&
PostPosted: Tue Sep 26, 2006 6:07 am 
Newbie

Joined: Tue Sep 12, 2006 5:17 pm
Posts: 4
hallo zusammen,

verwendet wird hibernate 3 in verbindung mit spring 1.2...

ich habe eine "one-to-many" beziehung zwischen den beiden tabellen "APERIODE1" und "APERIODEX". die zusammengehörenden daten aus den beiden tabellen kann ich nur über eine abfrage auf "APERIODEX" (über die felder akz, einrnr u. urlbnr ermitteln --> diese werden vom benutzer über ein formular eingegeben).

die abfrage (über spring's HibernateTemplate) sieht also folgendermaßen aus:

getHibernateTemplate().find("from " + table + " day where day.id.akz = ? and day.einrnr = ? and day.urlbnr = ? order by day.id.swsocc asc", criteria);

das funktioniert auch problemlos. ich bekomme korrekt alle benötigten APERIODEX datensätze und automatisch über die hibernate-mappings die dazugehörende APERIODE1.

mein problem ist aber, dass das HashSet in der APERIODE1 klasse verständlicherweise alle APERIODEX datensätze enthält, bei denen die keys passen. ich brauche aber nur jene, bei denen auch die oben in der abfrage verwendeten felder übereinstimmen (einrnr, urlbnr).

so... nun zu meiner FRAGE: wie kann ich im mapping diese zusätzliche einschränkung definieren?

die werte für die felder "einrnr" u. "urlbnr" ergeben sich natürlich erst zur laufzeit durch benutzereingabe.
ich habe trotz längerer suche kein beispiel bzw. eine lösung für diese anforderung gefunden. ich vermute, es lässt sich über eine <filter-def> im mapping angeben, aber wie das genau aussieht u. wie dann die paramter für den filter im java code gesetzt werden, habe ich nicht rausbekommen.

kann mir da bitte jemand weiterhelfen? bin für alle tipps/beispiele/lösungen sehr dankbar...


hier noch die hibernate mappings für die beiden klassen:

<class name="Aperiode1" table="APERIODE1" optimistic-lock="all" dynamic-update="true">
<composite-id name="id" class="Aperiode1Id">
<key-property name="akz" type="integer">
<column name="AKZ" />
</key-property>
<key-property name="perbeg" type="date">
<column name="PERBEG" length="10" />
</key-property>
</composite-id>
...
<property …/>
...
<!-- bi-directional one-to-many association to Aperiodex -->
<set name="aperiodexList" table="aperiodex" lazy="false" inverse="true" cascade="save-update" where="">
<key>
<column name="AKZ" />
<column name="PERBEG" />
</key>
<one-to-many entity-name="AperiodexDay"/>
<!-- HIER MUSS EINGESCHRÄNKT WERDEN, DASS NUR DATENSÄTZE BEI DENEN DIE PROPERTIES (EINRNR & URLNR) IN DER APERIODEX EINEN BESTIMMTEN WERT HABEN, DER ABER ERST ZUR LAUFZEIT ERMITTELT WIRD -->
</set>



<class name="Day" table="APERIODEX" entity-name="AperiodexDay" optimistic-lock="all" dynamic-update="true">
<composite-id name="id" unsaved-value="undefined" class="AperiodexId">
<key-property name="akz" type="integer">
<column name="AKZ" not-null="true"/>
</key-property>
<key-property name="perbeg" type="date">
<column name="PERBEG" not-null="true"/>
</key-property>
<key-property name="swsocc" type="integer">
<column name="SWSOCC" not-null="true"/>
</key-property>
</composite-id>
...
<property name="einrnr" type="long" column="EINRNR"/>
<property name="urlbnr" type="integer" column="URLBNR"/>
...
<!-- bi-directional many-to-one association to Aperiode1 -->
<many-to-one name="aperiode1" class="Aperiode1" outer-join="auto" insert="false" update="false" lazy="false">
<column name="AKZ" />
<column name="PERBEG" />
</many-to-one>


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 26, 2006 12:11 pm 
Newbie

Joined: Tue Sep 12, 2006 5:17 pm
Posts: 4
hat sich erledigt... konnte ich mit den filtern lösen.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.