Armin Waibel escribió:
Hi,
Iris Soto wrote:
Hello all,
I've problems to handle 1:1 relationships, I want this association
is navigable on both sides, from person to passport and vice versa.
I'm working with OJB and Postgresql, how can i declare in the ojb
descriptor, in the schema this type of relationships, i try this way,
but i get the following error:
proxy.IndirectionHandler - Can not materialize object for Identity
org.apache.ojb.Person{25} - using PBKey org.apache.ojb.broker.PBKey:
jcdAlias=default, user=postgres, password=*****
Which version of OJB do you use?
Did you enable CGLib proxy support in OJB.properties file?
Did your test pass without using proxied references?
In your mapping you don't use separate FK for the 1:1 references. This
could cause unexpected behavior when using proxy references. Assume
you are nullify the Passport of a Person. Next time you materialize
the Person object OJB tries to resolve the reference to Passport by
lookup the FK defined in Person. You define the Person PK as FK for
Passport reference (the FK to Passport could never be nullified), thus
OJB assume that the reference to Passport still exists and create a
proxy reference (instead of setting null). If you now try to access
the Passport reference in Person you will get a NPE, because OJB can't
find the Passport object.
regards,
Armin
Hello Armin, thanks for ask me,
the version of OJB that i'm using is y.IndirectionHandler -1.0.4, in the
OJB.properties file i have enable CGLib proxy support. I has been try
test pass without using proxied references, and there is nothing
different, the error is the same. I want to make bidirectional reference
even though the passport is null when make reference in person
to passport. OJB can work with this null reference?
Now I have:
****************************************************************
<class-descriptor class="org.apache.ojb.Person" table="PERSON">
<field-descriptor name="personId" primarykey="true"
nullable="false" autoincrement="true"... column="PERSON_ID"
jdbc-type="INTEGER"/>
<field-descriptor name="personName" nullable="false"
default-fetch="true" column="PERSON_NAME" jdbc-type="VARCHAR"/>
<reference-descriptor name="personIdRef"
class-ref="org.apache.ojb.Passport" auto-update="true" auto-delete="true">
<foreignkey field-ref="personId"/>
</reference-descriptor>
</class-descriptor>
****************************************************************
<class-descriptor class="org.apache.ojb.Passport" table="PASSPORT">
<field-descriptor name="personId" primarykey="true"
nullable="false" column="PERSON_ID" jdbc-type="INTEGER"/>
<field-descriptor name="passport_number" nullable="false"
default-fetch="true" column="PASSPORT_NUMBER" jdbc-type="VARCHAR"/>
<reference-descriptor name="personIdRef"
class-ref="org.apache.ojb.Person" auto-update="false" auto-delete="false">
<foreignkey field-ref="personId"/>
</reference-descriptor>
</class-descriptor>
--
Iris Soto
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]