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