Despite appearances, I am not responding to myself. I received Christoph's
response to this post at home last night, so it is not available to me for
responding. ;-}
Anyway, Christoph I'm not sure what you tried, and I am by NO means expert
with OJB, but I think that your class-descriptor for
net.uhrhan.musicdb.data.Artist needs a collection-descriptor like this:
<collection-descriptor
name="songs"
element-class-ref="net.uhrhan.musicdb.data.Song"
>
and your Artist class needs a Collection attribute 'songs'. (I just noticed
this last requirement)
Hopefully this will help. If this is what you have already tried, post that
info back to the list and maybe someone who knows more than I do will
respond.
Dave Derry
----- Original Message -----
From: "Dave Derry" <[EMAIL PROTECTED]>
> If your setup looks exactly like the tutorial, you're looking at the wrong
> part of the tutorial. ;-}
>
> Look at the 'mapping 1:n associations'> You need a collection-descriptor
in
> the class descriptor for artist, since an artist will have a collection of
> songs.
>
> Hope this helps,
> Dave Derry
>
> ----- Original Message -----
> From: "Christoph Uhrhan" <[EMAIL PROTECTED]>
>
>
> Hello,
> I have a problem with foreign key references. I've been searching the list
> but
> didn't find an answer, so I'm rather desperate.
> I have OJB running on a PostgreSQL-Database and a fairly simple example
that
> just won't work.
>
> These are the tables:
>
> create table artist
> (
> artistid serial primary key,
> name varchar(300),
> since int,
> until int
> );
>
> create table song
> (
> songid serial primary key,
> title varchar(500) not null,
> artistid int references artist,
> mp3genreid int references mp3genre,
> year int
> );
>
> This is the mapping:
>
> <class-descriptor
> class="net.uhrhan.musicdb.data.Artist"
> table="artist"
> >
> <field-descriptor id="1"
> name="id"
> column="artistid"
> jdbc-type="INTEGER"
> primarykey="true"
> autoincrement="true"
> />
> <field-descriptor id="2"
> name="name"
> column="name"
> jdbc-type="VARCHAR"
> />
> <field-descriptor id="3"
> name="since"
> column="since"
> jdbc-type="INTEGER"
> />
>
> <field-descriptor id="4"
> name="until"
> column="until"
> jdbc-type="INTEGER"
> />
> </class-descriptor>
>
>
> <class-descriptor
> class="net.uhrhan.musicdb.data.Song"
> table="song"
> >
> <field-descriptor id="1"
> name="id"
> column="songid"
> jdbc-type="INTEGER"
> primarykey="true"
> autoincrement="false"
> />
> <field-descriptor id="2"
> name="title"
> column="title"
> jdbc-type="VARCHAR"
> />
> <field-descriptor id="3"
> name="artistid"
> column="artistid"
> jdbc-type="INTEGER"
> />
> <reference-descriptor
> name="Artist"
> class-ref="net.uhrhan.musicdb.data.Artist"
> >
> <foreignkey field-id-ref="3"/>
> </reference-descriptor>
> </class-descriptor>
>
> And querying via the ODMG-API and the PersistenceBroker-API I get the
> following error-Message:
>
> org.apache.ojb.broker.metadata.MetadataException: Error creating
> PersistentField: net.uhrhan.musicdb.data.Song, Artist
>
> What am I doing wrong? The setup looks exactly like that presented in the
> 'Advanced O/R-Mapping'-Tutorial.
>
> Thanks in advance for your help (and your patience)
> Cheers
> Christoph
>
>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>