Hi,

i have  problems with the foreign key, i can't set the idorganisation in table 
benutzer. The log says Column 'idorganisation' cannot be null. 


-- 
-- Tabellenstruktur f�r Tabelle `benutzer`
-- 

CREATE TABLE benutzer (
  id int(11) NOT NULL default '0',
  kennung varchar(8) NOT NULL default '',
  passwort varchar(42) NOT NULL default '',
  name varchar(100) NOT NULL default '',
  vorname varchar(50) NOT NULL default '',
  telefon varchar(25) default NULL,
  email varchar(100) default NULL,
  zustand char(1) NOT NULL default '',
  idorganisation int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  UNIQUE KEY kennung (kennung),
  KEY idorganisation (idorganisation)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

-- 
-- Tabellenstruktur f�r Tabelle `organisation`
-- 

CREATE TABLE organisation (
  id int(11) NOT NULL default '0',
  name varchar(100) NOT NULL default '',
  art char(1) NOT NULL default '',
  PRIMARY KEY  (id),
  UNIQUE KEY name (name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 
-- Constraints der exportierten Tabellen
-- 

-- 
-- Constraints der Tabelle `benutzer`
-- 
ALTER TABLE `benutzer`
  ADD CONSTRAINT benutzer_ibfk_1 FOREIGN KEY (idorganisation) REFERENCES 
organisation (id);

----------------------------------------------------------------------------------------

mapping.xml:

        <class name="BenutzerData" identity="id" key-generator="MAX" >
                <map-to table="benutzer" />
                <field name="id" type="integer">
                        <sql name="id" type="integer" />
                </field>
                <field name="kennung" type="string">
                        <sql name="kennung" type="varchar" />
                </field>
                <field name="passwort" type="string">
                        <sql name="passwort" type="varchar" />
                </field>
                <field name="name" type="string">
                        <sql name="name" type="varchar" />
                </field>
                <field name="vorname" type="string">
                        <sql name="vorname" type="varchar" />
                </field>
                <field name="telefon" type="string">
                        <sql name="telefon" type="varchar" />
                </field>
                <field name="email" type="string">
                        <sql name="email" type="varchar" />
                </field>
                <field name="zustand" type="string">
                        <sql name="zustand" type="char" />
                </field>
                <field name="organisationData"
                        type="OrganisationData" required="true">
                        <sql name="idorganisation" />
                </field>

        </class>

        <!--  Mapping for OrganisationData  -->
        <class name="OrganisationData"
                identity="id" key-generator="MAX">
                <map-to table="organisation" />
                <field name="id" type="integer" >
                        <sql name="id" type="integer"/>
                </field>
                <field name="name" type="string">
                        <sql name="name" type="varchar"/>
                </field>
                <field name="art" type="string">
                        <sql name="art" type="char"/>
                </field>
                <field name="benutzer"
                        type="BenutzerData"
                        collection="arraylist" >
                        <sql many-key="idorganisation" >
                </field>
        </class>

---------------------------------------------------------

BenutzerData.java:

..
        private OrganisationData organisationData;
        
        
        /**
         * @return Returns the organisationData.
         */
        public OrganisationData getOrganisationData() {
                return organisationData;
        }
        /**
         * @param organisationData The organisationData to set.
         */
        public void setOrganisationData(OrganisationData organisationData) {
                this.organisationData = organisationData;
        }
..

OrganisationData.java:

..
        private int id;
        private String name = "";
        private String art = "";
        private ArrayList benutzer = new ArrayList();
        
        

        /**
         * @return Returns the benutzer.
         */
        public ArrayList getBenutzer() {
                return benutzer;
        }
        /**
         * @param benutzer The benutzer to set.
         */
        public void setBenutzer(ArrayList benutzer) {
                this.benutzer = benutzer;
        }
        /**
         * @param add benutzer to the collection benutzer
         */
        public void addBenutzer(BenutzerData benutzer){
                this.benutzer.add(benutzer);
                benutzer.setOrganisationData(this);
        }
..

UserFactory.java:

..
                        OrganisationData orga = 
(OrganisationData)jdo.load(OrganisationData.class,new 
Integer(form.getIdOrganisation()));

                        db.begin();
                        
                        System.out.println(">>>> orga.getId(): " + 
orga.getId());  // orga is not null -> id is set!!!

                        benutzer.setOrganisationData(orga);
                        orga.addBenutzer(benutzer);
                        db.create(benutzer);
                        
                        db.commit();
                        db.close();
..

---------------------------------------------------------
logger output:

..
>>>> orga.getId():  1
21.12.2004 16:47:30 org.exolab.castor.jdo.engine.SQLEngine create
SCHWERWIEGEND: A fatal error occurred while creating/updating BenutzerData 
using SQL: INSERT INTO benutzer 
(id,kennung,passwort,name,vorname,telefon,email,zustand,idorganisation) VALUES 
(?,?,?,?,?,?,?,?,?)
java.sql.SQLException: Column 'idorganisation' cannot be null
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2816)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1518)
..

----------------------------------------------------------

I use:
castor-0.9.6-RC2
mySQL 4.1

Please help me.

Thanks
Marco


Arcor-DSL: die echte Flatrate f�r alle Bandbreiten. Jetzt ohne Einrichtungspreis
einsteigen oder wechseln. Arcor-DSL ist in vielen Anschlussgebieten verf�gbar.
http://www.arcor.de/home/redir.php/emf-dsl-1

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

Reply via email to