Gentlemen,

I have tried these fixes to no avial.  I have tried the key generator
with both the trigger and returning params set and unset.  Both ways
produce keys
for me but ultimately, my stacktrace ends up the same.  Here it is.  I
included
the entire output for reference.



C:\SchedulingFramework>java -classpath
C:/SchedulingFramework/src/sample;C:/SchedulingFramework/lib/msf.jar;C:/
JBuilder6/lib/castor-0.9.4.1.jar;C:/JBuilder6/lib/xerces.jar;c:\JBuilder
6\lib\classes12.zip;C:/JBuilder6/jdk1.3.1/lib/tools.jar Msf 
[msf] Loading mapping descriptors from
file:/C:/SchedulingFramework/src/sample/mapping.xml
[msf] SQL for creating msf.MissionSchedulingRequest: INSERT INTO "MSR"
("ID","START_TIME","FINISH_TIME","SURGE") VALUES (?,?,?,?)
[msf] SQL for deleting msf.MissionSchedulingRequest: DELETE FROM "MSR"
WHERE "ID"=?
[msf] SQL for updating msf.MissionSchedulingRequest: UPDATE "MSR" SET
"START_TIME"=?,"FINISH_TIME"=?,"SURGE"=? WHERE "ID"=? AND "START_TIME"=?
AND "FINISH_TIME"=? AND "SURGE"=?
[msf] SQL for loading msf.MissionSchedulingRequest:  SELECT
"MSR"."START_TIME","MSR"."FINISH_TIME","MSR"."SURGE" FROM "MSR" WHERE
"MSR"."ID"=?
[msf] Key generator SEQUENCE has been instantiated, parameters:
{sequence={0}_{1}_seq}
[msf] SQL for creating msf.OpLoc: INSERT INTO "OPLOC"
("ID","MSR_ID","LOC_NAME","ICAO","LAT","LON","ELEVATION") VALUES
("OPLOC_ID_SEQ"."NEXTVAL",?,?,?,?,?,?)
[msf] SQL for deleting msf.OpLoc: DELETE FROM "OPLOC" WHERE "ID"=?
[msf] SQL for updating msf.OpLoc: UPDATE "OPLOC" SET
"MSR_ID"=?,"LOC_NAME"=?,"ICAO"=?,"LAT"=?,"LON"=?,"ELEVATION"=? WHERE
"ID"=? AND "MSR_ID"=? AND "LOC_NAME"=? AND "ICAO"=? AND "LAT"=? AND
"LON"=? AND "ELEVATION"=?
[msf] SQL for loading msf.OpLoc:  SELECT
"OPLOC"."MSR_ID","OPLOC"."LOC_NAME","OPLOC"."ICAO","OPLOC"."LAT","OPLOC"
."LON","OPLOC"."ELEVATION" FROM "OPLOC" WHERE "OPLOC"."ID"=?
[msf] SQL for creating msf.Unit: INSERT INTO "UNIT"
("ID","MSR_ID","OPLOC_ID","UNIT_NAME") VALUES (?,?,?,?)
[msf] SQL for deleting msf.Unit: DELETE FROM "UNIT" WHERE "ID"=?
[msf] SQL for updating msf.Unit: UPDATE "UNIT" SET
"MSR_ID"=?,"OPLOC_ID"=?,"UNIT_NAME"=? WHERE "ID"=? AND "MSR_ID"=? AND
"OPLOC_ID"=? AND "UNIT_NAME"=?
[msf] SQL for loading msf.Unit:  SELECT
"UNIT"."MSR_ID","UNIT"."OPLOC_ID","UNIT"."UNIT_NAME" FROM "UNIT" WHERE
"UNIT"."ID"=?
[msf] SQL for creating msf.Aircraft: INSERT INTO "AIRCRAFT"
("ID","MSR_ID","UNIT_ID","OPLOC_ID","ACFT_TYPE","ACFT_QTY","UTE_RATE","P
LANNED_SORTIES","AVAILABLE_SORTIES","DMPIS_PER_SORTIE","TURN_TIME","ACFT
_SPEED","ACFT_COMBAT_RADIUS","NIGHT_CAPABLE","MSN_CAT","CTRY_CODE","SERV
ICE") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
[msf] SQL for deleting msf.Aircraft: DELETE FROM "AIRCRAFT" WHERE "ID"=?
[msf] SQL for updating msf.Aircraft: UPDATE "AIRCRAFT" SET
"MSR_ID"=?,"UNIT_ID"=?,"OPLOC_ID"=?,"ACFT_TYPE"=?,"ACFT_QTY"=?,"UTE_RATE
"=?,"PLANNED_SORTIES"=?,"AVAILABLE_SORTIES"=?,"DMPIS_PER_SORTIE"=?,"TURN
_TIME"=?,"ACFT_SPEED"=?,"ACFT_COMBAT_RADIUS"=?,"NIGHT_CAPABLE"=?,"MSN_CA
T"=?,"CTRY_CODE"=?,"SERVICE"=? WHERE "ID"=? AND "MSR_ID"=? AND
"UNIT_ID"=? AND "OPLOC_ID"=? AND "ACFT_TYPE"=? AND "ACFT_QTY"=? AND
"UTE_RATE"=? AND "PLANNED_SORTIES"=? AND "AVAILABLE_SORTIES"=? AND
"DMPIS_PER_SORTIE"=? AND "TURN_TIME"=? AND "ACFT_SPEED"=? AND
"ACFT_COMBAT_RADIUS"=? AND "NIGHT_CAPABLE"=? AND "MSN_CAT"=? AND
"CTRY_CODE"=? AND "SERVICE"=?
[msf] SQL for loading msf.Aircraft:  SELECT
"AIRCRAFT"."MSR_ID","AIRCRAFT"."UNIT_ID","AIRCRAFT"."OPLOC_ID","AIRCRAFT
"."ACFT_TYPE","AIRCRAFT"."ACFT_QTY","AIRCRAFT"."UTE_RATE","AIRCRAFT"."PL
ANNED_SORTIES","AIRCRAFT"."AVAILABLE_SORTIES","AIRCRAFT"."DMPIS_PER_SORT
IE","AIRCRAFT"."TURN_TIME","AIRCRAFT"."ACFT_SPEED","AIRCRAFT"."ACFT_COMB
AT_RADIUS","AIRCRAFT"."NIGHT_CAPABLE","AIRCRAFT"."MSN_CAT","AIRCRAFT"."C
TRY_CODE","AIRCRAFT"."SERVICE" FROM "AIRCRAFT" WHERE "AIRCRAFT"."ID"=?
[msf] SQL for creating msf.Munition: INSERT INTO "MUNITION"
("ID","MSR_ID","OPLOC_ID","MUN_TYPE","MUN_QTY","STAND_OFF_RANGE") VALUES
(?,?,?,?,?,?)
[msf] SQL for deleting msf.Munition: DELETE FROM "MUNITION" WHERE "ID"=?
[msf] SQL for updating msf.Munition: UPDATE "MUNITION" SET
"MSR_ID"=?,"OPLOC_ID"=?,"MUN_TYPE"=?,"MUN_QTY"=?,"STAND_OFF_RANGE"=?
WHERE "ID"=? AND "MSR_ID"=? AND "OPLOC_ID"=? AND "MUN_TYPE"=? AND
"MUN_QTY"=? AND "STAND_OFF_RANGE"=?
[msf] SQL for loading msf.Munition:  SELECT
"MUNITION"."MSR_ID","MUNITION"."OPLOC_ID","MUNITION"."MUN_TYPE","MUNITIO
N"."MUN_QTY","MUNITION"."STAND_OFF_RANGE" FROM "MUNITION" WHERE
"MUNITION"."ID"=?
[msf] SQL for creating msf.Target: INSERT INTO "TARGET"
("ID","MSR_ID","BE_NUMBER","DMPI","LAT","LON","ELEVATION","PRIORITY","PR
EDECESSOR","TGT_GROUP","SEQUENCE","PKG","PKG_PRIORITY","PROB_DAMAGE","ER
ROR_PROB_CIRCULAR","ERROR_PROB_DEFLECTION","ERROR_PROB_RANGE","ERROR_RAN
GE_BIAS") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
[msf] SQL for deleting msf.Target: DELETE FROM "TARGET" WHERE "ID"=?
[msf] SQL for updating msf.Target: UPDATE "TARGET" SET
"MSR_ID"=?,"BE_NUMBER"=?,"DMPI"=?,"LAT"=?,"LON"=?,"ELEVATION"=?,"PRIORIT
Y"=?,"PREDECESSOR"=?,"TGT_GROUP"=?,"SEQUENCE"=?,"PKG"=?,"PKG_PRIORITY"=?
,"PROB_DAMAGE"=?,"ERROR_PROB_CIRCULAR"=?,"ERROR_PROB_DEFLECTION"=?,"ERRO
R_PROB_RANGE"=?,"ERROR_RANGE_BIAS"=? WHERE "ID"=? AND "MSR_ID"=? AND
"BE_NUMBER"=? AND "DMPI"=? AND "LAT"=? AND "LON"=? AND "ELEVATION"=? AND
"PRIORITY"=? AND "PREDECESSOR"=? AND "TGT_GROUP"=? AND "SEQUENCE"=? AND
"PKG"=? AND "PKG_PRIORITY"=? AND "PROB_DAMAGE"=? AND
"ERROR_PROB_CIRCULAR"=? AND "ERROR_PROB_DEFLECTION"=? AND
"ERROR_PROB_RANGE"=? AND "ERROR_RANGE_BIAS"=?
[msf] SQL for loading msf.Target:  SELECT
"TARGET"."MSR_ID","TARGET"."BE_NUMBER","TARGET"."DMPI","TARGET"."LAT","T
ARGET"."LON","TARGET"."ELEVATION","TARGET"."PRIORITY","TARGET"."PREDECES
SOR","TARGET"."TGT_GROUP","TARGET"."SEQUENCE","TARGET"."PKG","TARGET"."P
KG_PRIORITY","TARGET"."PROB_DAMAGE","TARGET"."ERROR_PROB_CIRCULAR","TARG
ET"."ERROR_PROB_DEFLECTION","TARGET"."ERROR_PROB_RANGE","TARGET"."ERROR_
RANGE_BIAS" FROM "TARGET" WHERE "TARGET"."ID"=?
[msf] SQL for creating msf.Weaponeering: INSERT INTO "WEAPONEERING"
("ID","MSR_ID","TGT_ID","ACFT_TYPE","ACFT_QTY","MUN_TYPE","MUN_QTY")
VALUES (?,?,?,?,?,?,?)
[msf] SQL for deleting msf.Weaponeering: DELETE FROM "WEAPONEERING"
WHERE "ID"=?
[msf] SQL for updating msf.Weaponeering: UPDATE "WEAPONEERING" SET
"MSR_ID"=?,"TGT_ID"=?,"ACFT_TYPE"=?,"ACFT_QTY"=?,"MUN_TYPE"=?,"MUN_QTY"=
? WHERE "ID"=? AND "MSR_ID"=? AND "TGT_ID"=? AND "ACFT_TYPE"=? AND
"ACFT_QTY"=? AND "MUN_TYPE"=? AND "MUN_QTY"=?
[msf] SQL for loading msf.Weaponeering:  SELECT
"WEAPONEERING"."MSR_ID","WEAPONEERING"."TGT_ID","WEAPONEERING"."ACFT_TYP
E","WEAPONEERING"."ACFT_QTY","WEAPONEERING"."MUN_TYPE","WEAPONEERING"."M
UN_QTY" FROM "WEAPONEERING" WHERE "WEAPONEERING"."ID"=?
[msf] Begin transaction
Unmarshalling Mission Scheduling Request
[msf] Insert Mission Scheduling Request ...
[msf] Castor: Creating msf.MissionSchedulingRequest (1)
[msf] Insert OpLocs ...
[msf] Castor: Creating msf.OpLoc (null)
[msf] Insert unit FKs...
2  OpLocList value = 1
[msf] Castor: Creating msf.Unit (1)
[msf] Error creating msf.Unit, SQL : INSERT INTO "UNIT"
("ID","MSR_ID","OPLOC_ID","UNIT_NAME") VALUES (?,?,?,?)
[msf] org.exolab.castor.jdo.PersistenceException: Nested error:
java.sql.SQLException: ORA-01400: cannot insert NULL into
("MSF"."UNIT"."OPLOC_ID")

[msf] java.sql.SQLException: ORA-01400: cannot insert NULL into
("MSF"."UNIT"."OPLOC_ID")

[msf]   at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
[msf]   at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
[msf]   at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
[msf]   at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
[msf]   at
oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:862)
[msf]   at
oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:
1846)
[msf]   at
oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1
771)
[msf]   at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.
java:2361)
[msf]   at
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedS
tatement.java:422)
[msf]   at org.exolab.castor.jdo.engine.SQLEngine.create(Unknown Source)
[msf]   at org.exolab.castor.persist.ClassMolder.create(Unknown Source)
[msf]   at org.exolab.castor.persist.LockEngine.create(Unknown Source)
[msf]   at org.exolab.castor.persist.TransactionContext.create(Unknown
Source)
[msf]   at org.exolab.castor.jdo.engine.DatabaseImpl.create(Unknown
Source)
[msf]   at Msf.run(Unknown Source)
[msf]   at Msf.main(Unknown Source)

I've included the additions to my OpLoc class where I set Unit (and
Munition) using
The following line:
vUnit.setOploc(this);  without any change in behavior.

I think the problem may lie in may unmarshalling code.  Pls take a look
and see what you think.
I've already included snippets of the mapping file, .xsd file, and so
forth at 
http://castor.exolab.org/list-archive/msg23192.html

Here is my marhsallng code..

import javax.sql.*;
import java.util.*;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.DriverManager;
import org.xml.sax.ContentHandler;
import org.exolab.castor.jdo.*;
import org.exolab.castor.util.*;
import org.exolab.castor.xml.*;
import org.exolab.castor.mapping.Mapping;
import org.apache.xml.serialize.*;
import msf.*;


public class Msf
{

    // database configuration file
    public static final String DatabaseFile = "database.xml";
    // mapping file
    public static final String MappingFile = "mapping.xml";

    private Mapping  _mapping;

    private JDO      _jdo;

    private MissionSchedulingRequest _missionSchedulingRequest;



    public void Prepenv( PrintWriter writer )
        throws Exception
    {

        // Load the mapping file
        _mapping = new Mapping( getClass().getClassLoader() );
        _mapping.setLogWriter( writer );
        _mapping.loadMapping( getClass().getResource( MappingFile ) );

        _jdo = new JDO();
        _jdo.setLogWriter( writer );
        _jdo.setConfiguration( getClass().getResource( DatabaseFile
).toString() );
        _jdo.setDatabaseName( "webtas" );
    }


    public void run( PrintWriter writer )
        throws Exception
    {
        Database                 db;
        MissionSchedulingRequest missionSchedulingRequest;
        OpLoc                                oploc;
        Unit                             unit;
        Aircraft                                 aircraft;
        Munition                 munition;
        Target                       target;
        Weaponeering             weaponeering;
        QueryResults             results;


        db = _jdo.getDatabase();

        writer.println( "Begin transaction" );

        System.out.println("Unmarshalling Mission Scheduling Request");
        _missionSchedulingRequest =
MissionSchedulingRequest.unmarshal(new FileReader("request_trunc.xml"));

        // Insert request
        db.begin();
        writer.println( "Insert Mission Scheduling Request ..." );
        db.create(_missionSchedulingRequest);
        db.commit();

        // Insert Operating Locations (OpLocs)
        OpLoc[] opLocList = _missionSchedulingRequest.getOpLoc();
                for (int g=0; g < opLocList.length; g++)
                {
                   writer.println( "Insert OpLocs ..." );
        
opLocList[g].setMissionSchedulingRequest(_missionSchedulingRequest);
                   db.begin();
                   db.create(opLocList[g]);
           db.commit();

           writer.println( "Insert unit FKs..." );
                   Unit[] unitList = opLocList[g].getUnit();
                   for (int h=0; h < unitList.length; h++)
                   {
                      OpLoc unitOpLoc = opLocList[g];
                      System.out.println("2  OpLocList value = " +
opLocList[g].getId());
                      unitList[h].setOpLoc(unitOpLoc);
        
unitList[h].setMissionSchedulingRequest(_missionSchedulingRequest);
                      db.begin();
                      db.create(unitList[h]);
                      db.commit();

                      writer.println( "Insert aircraft FKs...");
                      Aircraft[] aircraftList =
unitList[h].getAircraft();
                      for (int a = 0; a < aircraftList.length; a++)
                      {
                                  Unit aircraftUnit = unitList[h];
                                  aircraftList[a].setUnit(aircraftUnit);
                                  aircraftList[a].setOpLoc(unitOpLoc);
        
aircraftList[a].setMissionSchedulingRequest(_missionSchedulingRequest);
                          db.begin();
                                  db.create(aircraftList[a]);
                                  db.commit();
                          }

                   }


           writer.println( "Insert munition FKs..." );
                   Munition[] munitionList = opLocList[g].getMunition();
                   db.begin();
                   for (int i=0; i < munitionList.length; i++)
                   {
                      OpLoc munitionOpLoc = opLocList[g];
                      munitionList[i].setOpLoc(munitionOpLoc);
        
munitionList[i].setMissionSchedulingRequest(_missionSchedulingRequest);
                      db.create(munitionList[i]);
                   }
           db.commit();
            }

            //Insert Units
            Unit[] unitList = _missionSchedulingRequest.getUnit();
            db.begin();
                for (int j=0; j < unitList.length; j++)
                {
                   writer.println( "Insert Units ..." );
                   db.create(unitList[j]);
            }
            db.commit();

            // Insert Aircraft
                Aircraft[] aircraftList =
_missionSchedulingRequest.getAircraft();
                db.begin();
                for (int m=0; m < aircraftList.length; m++)
                {
                   writer.println( "Insert aircraft ..." );
                   db.create(aircraftList[m]);
                }
                db.commit();

        // Insert Munition
                Munition[] munitionList =
_missionSchedulingRequest.getMunition();
                db.begin();
                for (int n=0; n < munitionList.length; n++)
                {
                   writer.println( "Insert munitions ..." );
                   db.create(munitionList[n]);
                }
                db.commit();

        // Insert Targets
        Target[] tgtList = _missionSchedulingRequest.getTarget();
        for (int p=0; p < tgtList.length; p++)
        {
           writer.println( "Insert targets ..." );
 
tgtList[p].setMissionSchedulingRequest(_missionSchedulingRequest);
           db.begin();
           db.create(tgtList[p]);
           db.commit();

           writer.println( "Insert target weaponeering FKs..." );
           Weaponeering[] weaponeeringList =
tgtList[p].getWeaponeering();
           db.begin();
           for (int q=0; q < weaponeeringList.length; q++)
           {
              Target weaponeeringTarget = tgtList[p];
              weaponeeringList[q].setTarget(weaponeeringTarget);
 
weaponeeringList[q].setMissionSchedulingRequest(_missionSchedulingReques
t);
              db.create(weaponeeringList[q]);
               }
           db.commit();
        }

        // Insert Weaponeering
        Weaponeering[] weaponList =
_missionSchedulingRequest.getWeaponeering();
        db.begin();
        for (int r=0; r < weaponList.length; r++)
        {
           writer.println( "Insert weaponeering ..." );
           db.create(weaponList[r]);
        }
        db.commit();
        db.close();
    }


    public static void main( String[] args )
    {
        PrintWriter   writer;
        Msf msf = new Msf();

        writer = new Logger( System.out ).setPrefix( "msf" );
        try {
            msf.Prepenv( writer );
            msf.run( writer );
        } catch ( Exception except ) {
            writer.println( except );
            except.printStackTrace( writer );
        }
    }


}
-----Original Message-----
From: Bruce Snyder [mailto:[EMAIL PROTECTED]] 
Sent: Friday, January 31, 2003 5:04 PM
To: [EMAIL PROTECTED]
Subject: Re: [castor-dev] Use of Key-generated id values


This one time, at band camp, chavan said:

c>Hey ,
c>Whenever you add the child  to the collection in parent object, set 
c>the
c>parent of hte child like child.setParent(this); (i can't believe i am 
c>writing that like 4th time in a day). That will make it work. Will
post 
c>example if that don't make it work for you.

There's an example of this in the JDO examples (src/examples/jdo and
src/examples/myapp). See src/examples/myapp/Category.java line# 58. 

Bruce
-- 
perl -e 'print
unpack("u30","<0G)U8V4\@4VYY9&5R\"F9E<G)E=\$\!F<FEI+F-O;0\`\`");'

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

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

Reply via email to