Blame | Letzte Änderung | Log anzeigen | RSS feed
<com:TContent ID="body"><h1>Composite Keys or Multiple Complex Parameters Properties</h1><p>You might have noticed that in the above examples there is only a single keybeing used as specified in the <tt>resultMap</tt> by the <tt>column</tt> attribute.This would suggest that only a single column can be associated to a relatedmapped statement. However, there is an alternate syntax that allows multiplecolumns to be passed to the related mapped statement. This comes in handy forsituations where a composite key relationship exists, or even if you simplywant to use a parameter of some name other than <tt>#value#</tt>. The alternatesyntax for the column attribute is simply <tt>param1=column1, param2=column2, ... ,paramN=columnN</tt>. Consider the example below where the PAYMENT tableis keyed by both Customer ID and Order ID:</p><com:TTextHighlighter Language="xml" CssClass="source"><resultMap id="select-order-result" class="order"><result property="id" column="ORD_ID"/><result property="customerId" column="ORD_CST_ID"/>...<result property="payments" column="{itemId=ORD_ID, custId=ORD_CST_ID}"select="selectOrderPayments"/></resultMap><statement id="selectOrderPayments" resultMap="select-payment-result">select * from PAYMENTwhere PAY_ORD_ID = #itemId#and PAY_CST_ID = #custId#</statement></com:TTextHighlighter><p>Optionally you can just specify the column names as long as they're in thesame order as the parameters. For example:</p><com:TTextHighlighter Language="xml" CssClass="source">{ORD_ID, ORD_CST_ID}</com:TTextHighlighter><div class="note"><b>Important!</b><p>Currently the SQLMap DataMapper framework does not automatically resolvecircular relationships. Be aware of this when implementing parent/childrelationships (trees). An easy work around is to simply define a second resultmap for one of the cases that does not load the parent object (or vice versa),or use a join as described in the "N+1 avoidance" solutions.</p></div><div class="info"><b class="tip">Info:</b>Result Map names are always local to the Data Map definition file that theyare defined in. You can refer to a Result Map in another Data Map definitionfile by prefixing the name of the Result Map with the namespace of the SqlMapset in the <tt><sqlMap></tt> root element.</div></com:TContent>