i had a default method of native for the database tag all the time.
still i tried many different combinations of defaultIdMethod and
idMethod now but all produced the same, correct (?) SQL for the
relation:
CREATE TABLE ARTIST_HAS_WEBSITE
(
ARTIST_ID INTEGER NOT NULL,
WEBSITE_ID INTEGER NOT NULL,
PRIMARY KEY(ARTIST_ID,WEBSITE_ID),
FOREIGN KEY (ARTIST_ID) REFERENCES ARTIST (ID),
FOREIGN KEY (WEBSITE_ID) REFERENCES WEBSITE (ID)
);
and e.g. for the websites
CREATE TABLE WEBSITE
(
ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR (100) NOT NULL,
URL VARCHAR (200) NOT NULL,
PRIMARY KEY(ID)
);
still artist1.getPrimaryKey() give me always null after saving and the
other problems described also persist.
bye
fabian
On Thu, 2002-01-24 at 17:49, John McNally wrote:
> I notice you are not specifying an idmethod attribute on your tables,
> are you specifying a default. I suspect not as then you would probably
> have the attribute on your ARTIST_HAS_WEBSITE table.
>
> Use idmethod="native" or idmethod="autoincrement", if native does not
> work, on tables that have generated pk's. And then use idmethod="none"
> on tables such as ARTIST_HAS_WEBSITE.
>
> john mcnally
>
> Fabian Moerchen wrote:
> >
> > here's (part of) my schema. did i do something wrong?
> > could very well be since it's my first. ;)
> >
> > <table name="GENRE">
> > <column name="ID" type="INTEGER" required="true"
> > autoIncrement="true" primaryKey="true"/>
> > <column name="NAME" type="VARCHAR" size="50" required="true"/>
> > <unique>
> > <unique-column name="NAME"/>
> > </unique>
> > </table>
> > <table name="ARTIST">
> > <column name="ID" type="INTEGER" required="true"
> > autoIncrement="true" primaryKey="true"/>
> > <column name="NAME" type="VARCHAR" size="100" required="true"/>
> > <column name="PATTERN" type="VARCHAR" size="255"/>
> > <column name="SORTNAME" type="VARCHAR" size="255"/>
> > <column name="GENRE_ID" type="INTEGER"/>
> > <foreign-key foreignTable="GENRE">
> > <reference local="GENRE_ID" foreign="ID"/>
> > </foreign-key>
> > </table>
> > <table name="WEBSITE">
> > <column name="ID" type="INTEGER" required="true"
> > autoIncrement="true" primaryKey="true"/>
> > <column name="NAME" type="VARCHAR" size="100" required="true"/>
> > <column name="URL" type="VARCHAR" size="200" required="true"/>
> > </table>
> > <table name="ARTIST_HAS_WEBSITE">
> > <column name="ARTIST_ID" type="INTEGER" required="true"
> > primaryKey="true"/>
> > <foreign-key foreignTable="ARTIST">
> > <reference local="ARTIST_ID" foreign="ID"/>
> > </foreign-key>
> > <column name="WEBSITE_ID" type="INTEGER" required="true"
> > primaryKey="true"/>
> > <foreign-key foreignTable="WEBSITE">
> > <reference local="WEBSITE_ID" foreign="ID"/>
> > </foreign-key>
> > </table>
> >
> > bye
> > fabian
> >
> > On Thu, 2002-01-24 at 07:28, John McNally wrote:
> > > The first example should work. You might want to show your schema.xml,
> > > to give others some idea what might be wrong. artist1.getPrimaryKey()
> > > should give the id assigned after saving the object. It should not be
> > > null. If it is something is wrong with your xml.
> > >
> > > john mcnally
> > >
> > > >
> > > > this doesn't work:
> > > >
> > > > Artist artist1 = new Artist();
> > > > artist1.setName("Primus");
> > > > artist1.save();
> > > >
> > > > Website website1 = new Website();
> > > > website1.setName("Primus Online");
> > > > website1.setUrl("http://www.primussucks.com");
> > > > website1.save();
> > > >
> > > > ArtistHasWebsite link = new ArtistHasWebsite();
> > > > link.setArtist(artist1);
> > > > link.setWebsite(website1);
> > > > link.save(); //Column 'ARTIST_ID' cannot be null
> > > >
> > > > this does work:
> > > >
> > > > Artist artist1 = new Artist();
> > > > artist1.setName("Primus");
> > > > artist1.save();
> > > >
> > > > Website website1 = new Website();
> > > > website1.setName("Primus Online");
> > > > website1.setUrl("http://www.primussucks.com");
> > > > website1.save();
> > > >
> > > > Artist artist2 = ArtistFactory.findByName(artist1.getName());
> > > > Website website2 = WebsiteFactory.findByUrl(website1.getUrl());
> > > >
> > > > ArtistHasWebsite link = new ArtistHasWebsite();
> > > > link.setArtist(artist2);
> > > > link.setWebsite(website2);
> > > > link.save();
> > > >
> > > > tried defaultIdMethod native and idBroker by now.
> > > >
> > > > bye
> > > > fabian
> > > >
> > > > --
> > > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > > > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> > >
> > > --
> > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> > >
> > >
> >
> > --
> > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>