Author: brj
Date: Wed Feb 15 11:22:20 2006
New Revision: 378068

URL: http://svn.apache.org/viewcvs?rev=378068&view=rev
Log:
Relationships based on non primarykey fields.
backport from ojb 1.x.

Modified:
    
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/basic-technique.xml

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/basic-technique.xml
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/basic-technique.xml?rev=378068&r1=378067&r2=378068&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/basic-technique.xml
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/basic-technique.xml
 Wed Feb 15 11:22:20 2006
@@ -111,6 +111,14 @@
                     column="Kategorie_Nr"
                     jdbc-type="INTEGER"
                 />]]></source>
+                                       OJB assumes that field used in 
field-ref references the <em>primary-key</em> field
+                                       of the referenced type 
"org.apache.ojb.broker.ProductGroup".
+                    If field-ref should point to another field use the 
<em>target-field-ref</em>: 
+                <source><![CDATA[
+                               <foreignkey field-ref="productGroupName" 
target-field-ref="groupName
+                               "/>]]></source>
+                An example of a 1:1 relationship using a non-primary-key field 
can be 
+                found <a href="#non-pk-one-to-one">here</a>.
                 </li>
             </ul>
             <p>
@@ -210,6 +218,61 @@
                 <a href="site:faq/primitive-null">how OJB manage 
<code>null</code> for primitive PK/FK</a>
             </note>
 
+        <anchor id="non-pk-one-to-one"/>
+        <section>
+            <title>1:1 using non-primary-key field</title>
+                       <p>
+                       This example shows a relationship based on the field 
"productGroupName" referencing a non-primary-key-field. 
+                       This field of the class 
"org.apache.ojb.broker.NoPkReferenceTest$Article_2"     is pointing to the 
+                       field "groupName" of the referenced class.
+                       </p>
+            <source><![CDATA[
+<class-descriptor
+     class="org.apache.ojb.broker.NoPkReferenceTest$Article_2"
+     table="Artikel_2" >
+  <field-descriptor
+     name="articleId"
+     column="Artikel_Nr"
+     jdbc-type="INTEGER"
+     primarykey="true"
+     autoincrement="true"
+  />
+  ...
+  <field-descriptor
+     name="productGroupName"
+     column="KatName"
+     jdbc-type="VARCHAR"
+  />
+  ...
+  <reference-descriptor
+        name="productGroup"
+        class-ref="org.apache.ojb.broker.NoPkReferenceTest$ProductGroup_2"
+  >
+     <foreignkey field-ref="productGroupName" target-field-ref="groupName"/>
+  </reference-descriptor>
+</class-descriptor>
+
+<class-descriptor
+     class="org.apache.ojb.broker.NoPkReferenceTest$ProductGroup_2"
+     table="Kategorien_2" >
+  <field-descriptor
+     name="groupId"
+     column="Kategorie_Nr"
+     jdbc-type="INTEGER"
+     primarykey="true"
+     autoincrement="true"
+  />
+  <field-descriptor
+     name="groupName"
+     column="Kategorie_Name"
+     jdbc-type="VARCHAR"
+  />
+  ...
+</class-descriptor>]]></source>
+
+       </section>                      
+
+
             <section>
                 <title>1:1 auto-xxx setting</title>
                 <p>
@@ -867,7 +930,7 @@
                 <a href="site:faq/primitive-null">how OJB manage 
<code>null</code> for primitive PK/FK</a>
             </note>
 
-            
+
             <section>
                 <title>m:n auto-xxx setting</title>
                 <p>
@@ -1434,22 +1497,22 @@
                     the Article class) must implement an interface (for example
                     InterfaceArticle) to be able to benefit from dynamic 
proxies.
                 </p>
-                <note>                 
+                <note>
                        As of OJB 1.0.4, a facility is now present to allow the 
generation of
                        dynamic proxies that <strong>do not</strong> require 
the persistent class
-                       to implement an interface. Previous versions generated 
Proxies using the JDK 
-                       proxy pattern. That has been extracted into a new 
configuration setting named 
+                       to implement an interface. Previous versions generated 
Proxies using the JDK
+                       proxy pattern. That has been extracted into a new 
configuration setting named
                        'ProxyFactoryClass'.
                        <br/><br/>
                        Two implementations of this ProxyClass have been 
provided: the previous JDK-based version (default),
-                       and a new CGLIB-based implementation. Since the CGLIB 
version does byte-code 
-                       manipulation to generate the proxy, your class is not 
required to implement any 
-                       interface. All generated Proxies will automatically be 
sub-classes of your 
+                       and a new CGLIB-based implementation. Since the CGLIB 
version does byte-code
+                       manipulation to generate the proxy, your class is not 
required to implement any
+                       interface. All generated Proxies will automatically be 
sub-classes of your
                        persistent class.
                        <br/><br/>
-                       See below in the section "Customizing the proxy 
mechanism" for how to enable the new 
+                       See below in the section "Customizing the proxy 
mechanism" for how to enable the new
                        CGLIB Proxy generation.
-                       
+
                 </note>
             </section>
 
@@ -1590,14 +1653,14 @@
                     supplying a user-defined implementation.
                 </p>
                 <p>
-                    For dynamic proxies, you can select a ProxyFactory, as 
well as provide your own indirection handler. 
-                    Two default indirection handler implementations have been 
provided that coorespond 
-                    to the apporpriate ProxyFactory (IndirectionHandlerJDKImpl 
and IndirectionHandlerCGLIBImpl). 
+                    For dynamic proxies, you can select a ProxyFactory, as 
well as provide your own indirection handler.
+                    Two default indirection handler implementations have been 
provided that coorespond
+                    to the apporpriate ProxyFactory (IndirectionHandlerJDKImpl 
and IndirectionHandlerCGLIBImpl).
                 </p>
                 <p>
-                    <strong>Note:</strong> All indirection handlers must 
implement the appropriate base indirection handler 
-                    class, depending on what ProxyFactory is being used. For 
example: when using ProxyFactoryJDKImpl, the 
-                    specified indirection handler <strong>must</strong> 
implement the IndirectionHandlerJDK interface. 
+                    <strong>Note:</strong> All indirection handlers must 
implement the appropriate base indirection handler
+                    class, depending on what ProxyFactory is being used. For 
example: when using ProxyFactoryJDKImpl, the
+                    specified indirection handler <strong>must</strong> 
implement the IndirectionHandlerJDK interface.
                 </p>
                 <p>
                     Each of the three collection proxy classes can be replaced 
by a
@@ -1623,7 +1686,7 @@
        #       - ProxyFactoryCGLIBImpl: Refernece proxies are generated using 
bytecode manipulation
        #                       from the CGLIB library. Any class can become a 
dynamic proxy, and not
        #           just ones that implement an interface.
-       #   - ProxyFactoryJDKImpl: OJB 1.0 compatiable Proxy implementation. 
Proxies in this method 
+       #   - ProxyFactoryJDKImpl: OJB 1.0 compatiable Proxy implementation. 
Proxies in this method
        #                       can only be generated from classes that 
implement an interface, and
        #           the generated Proxy will implement all methods of that 
interface.
        #



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to