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]