You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Stephan Wannenwetsch <wa...@reitec.de> on 2003/12/05 15:01:06 UTC

1:1 relationship

Hallo,

I'm try to establish a 1:1 relationship between two object via a simple
object reference.

Imagine the following object modell

Class BusinessPartner();
	Integer bpid;
	Customer customer;

Class Customer();
	BusinessPartner businessParner;

To establish a relationship between two instances of BusinessPartner and
Customer I use the follwing code:

...
Customer cust = new Customer();
BusinessPartner bp = new BusinessPartner();
cust.setBusinessPartner(bp);
bp.setCustomer(cust);
...

Mapping of the repository_user.xml

    <class-descriptor 
    		class="demo.myshop.model.ojb2.BusinessPartner"
    		table="OJB_BP">

    	<field-descriptor
   		name="bpid"
   		column="BPID"
   		jdbc-type="INTEGER"
   		primarykey="true"
   		autoincrement="true"/>
      
  		
    	<field-descriptor
    		name="fk_cust"
    		column="FK_CUST"
    		jdbc-type="INTEGER"
    		access="anonymous"/>
    	   	   
 	<reference-descriptor
    		name="customer"
    		auto-retrieve="false"
    		class-ref="demo.myshop.model.ojb2.Customer">
    		<foreignkey>
    			 field-ref="fk_cust""
    		</foreignkey>
    	</reference-descriptor>
	
    </class-descriptor>

   <class-descriptor
   	class="demo.myshop.model.ojb2.Customer"
   	table="OJB_CUSTOMER">
   	<field-descriptor
   		name="fk_bpid"
   		column="FK_BPID"
   		jdbc-type="INTEGER"
   		primarykey="true"
   		autoincrement="false"
   		access="anonymous"/>
   		
	<reference-descriptor
         	name="businessPartner"
         	class-ref="demo.myshop.model.ojb2.BusinessPartner">
         	<foreignkey field-ref="fk_bpid"/>
     	</reference-descriptor>
  </class-descriptor>

My objective is not to have extra foreignkeys in my classes, which I do
not need in java to do such a relationship.

Doing it this way I get the following error:

	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:666)
	at java.lang.Thread.run(Thread.java:534)
Caused by: org.apache.ojb.broker.OJBRuntimeException: Incorrect field
reference "null" in
org.apache.ojb.broker.metadata.ObjectReferenceDescriptor@40afb9[cascade
delete=false,cascade retrieve=false,cascade store=false,is
lazy=false,class of Items=class demo.myshop.model.ojb2.Customer]
	at
org.apache.ojb.broker.metadata.ObjectReferenceDescriptor.getForeignKeyFi
eldDescriptors(Unknown Source)
	at
org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(Unkn
own Source)
	at
org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(Unkn
own Source)

Thanks,
Stephan

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org