Hi,

I have problems to save objects with depended objects that
links to another object.

mapping.xml:

<class name="com.sourcepark.requirementManagement.dbObjects.Requirement"
identity="id" key-generator="MAX">
<map-to table="requirements"/>

<field name="id" type="integer" >
<sql name="id" type="integer"/>
</field>


<field name="name" type="string">
<sql name="name" type="char"/>
</field>

<field name="events" type="com.sourcepark.requirementManagement.dbObjects.RequirementEvent"
collection="vector" required="true"
set-method="setEventsAsReference" get-method="getEventsAsReference"/>
</class>



<class name="com.sourcepark.requirementManagement.dbObjects.RequirementEvent"
depends="com.sourcepark.requirementManagement.dbObjects.Requirement"
identity="id" key-generator="MAX">
<map-to table="requirement_events"/>

<field name="id" type="integer" >
<sql name="id" type="integer"/>
</field>

<field name="requirement" type="com.sourcepark.requirementManagement.dbObjects.Requirement" >
<sql name="req_id"/>
</field>

<field name="name" type="string">
<sql name="name" type="char" required="true"/>
</field>

<field name="user" type="com.sourcepark.requirementManagement.dbObjects.User">
<sql many-key="user_id"/>
</field>
</class>


<class name="com.sourcepark.requirementManagement.dbObjects.User"
identity="id" key-generator="MAX">
<map-to table="users"/>

<field name="id" type="integer" >
<sql name="id" type="integer"/>
</field>

<field name="name" type="string">
<sql name="name" type="char"/>
</field>
</class>


this is the code to save the requirement-Object:

...
RequirementEvent reqEvent=new RequirementEvent();
reqEvent.setName("event-Name");
//gets an (in DB existing) user with id=1
User user=userManager.getUser(1);
reqEvent.setUser(user);
Requirement newRequirement=new Requirement();
reqEvent.setRequirement(newRequirement);
newRequirement.setName("REQUIREMENT-Name");
newRequirement.addEvents(reqEvent);
...
db.begin();
//make User of new Event persistent
RequirementEvent lastEvent=(RequirementEvent)(requirement.getEventsAsReference().lastElement());
newEvent.setUser((User)persistence.load(User.class,newEvent.getUser().getId()));
System.out.println("UserId of last Event: "+newEvent.getUser().getId());
System.out.println("User-persistent? : "+persistence.isPersistent(newEvent.getUser()));
db.create(requirement);
System.out.println("User-persistent? : "+persistence.isPersistent(newEvent.getUser()));
db.commit();
...

and here is the output:

...
UserId of last Event: 1
User-persistent? : true
Error while saving object: org.exolab.castor.jdo.PersistenceException:
Nested error: java.sql.SQLException: ORA-01400: Einf�gen von NULL in
("CASTOR"."REQUIREMENT_EVENTS"."USER_ID") nicht m�glich
User-Persistent? : true
...

Castor tries to insert null in the foreign-key for user.
Whats wrong? Is it not possible to link from depended objects
to other objects?

Thanks,
Steffen

----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev

Reply via email to