Hi Werner, 
thank you for your fast help, this was the problem. 

Regards 
Marco  


----- Original Nachricht ----
Von:     Werner Guttmann <[EMAIL PROTECTED]>
An:      "[email protected]" <[email protected]>
Datum:   21.12.2004 23:46
Betreff: Re: [castor-user] Column 'idorganisation' cannot be null. Foreign key 
Problem

> 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
> >
> >
> 
> 

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