Marco,

in your code fragment below, please make sure that you load the 
OrganisationData instance within the transaction where you want to set your 
Benutzer 
data. Iow,

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

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

should read 

                        db.begin();
                        OrganisationData orga = 
(OrganisationData)jdo.load(OrganisationData.class,new 
Integer(form.getIdOrganisation()));
                        benutzer.setOrganisationData(orga);
                        orga.addBenutzer(benutzer);
                        db.create(benutzer);
                        
                        db.commit();


Regards
Werner

On Tue, 21 Dec 2004 17:16:55 +0100 (CET), [EMAIL PROTECTED] wrote:

>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