thank you both. you helped me a lot in understanding ojb. I'll give it a try.
Dirk -----Ursprüngliche Nachricht----- Von: Armin Waibel [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 15. Januar 2004 18:06 An: OJB Users List Betreff: Re: AW: AW: AW: AW: Two 1:N mappings to one table Hi Dirk, if you use Identity columns from database you can't use the default SequenceManager (SequenceManagerHighLowImpl). Have a look in http://db.apache.org/ojb/sequencemanager.html#nativeSequenceManager > can all do for me. In the repository-user.xml I set every pk column with > primarykey="true" and autoincrement="true" for "declarative reasons", When using SequenceManagerNativeImpl you have to set access="readonly" too. regards, Armin Dirk Manske (Service Respond) wrote: > hm. our db2 database tables are configured with an autoincrement for > the primary keys by default. (for exampl: activityId INTEGER NOT NULL > GENERATED BY DEFAULT AS IDENTITY (STARTS WITH 1, INCREMENT BY 1, NO > CACHE, PRIMARY KEY). this is my first time using ojb. Meanwhile I get > aware of what ojb can all do for me. In the repository-user.xml I set > every pk column with primarykey="true" and autoincrement="true" for > "declarative reasons", because I thought OJB must get to know which > columns in db2 are set to pk's... Now I am wondering if the best > practice would be to set up the physical database with no pk's, fk's > etc at all and declare everything in the repository and let ojb control it? > > Furthermore I already declared a high/low sequence manager in the > repository without actually knowing what I was doing (I copied it from > somewhere). So please could you tell me what happend behind the > scenes? I guess OJB generated an id and tried to store it with the > object but then, > db2 overwrote the id via autoincrement. After the second store > operation, OJB looks for its generated id, cannot find it and stores > it as a new activity instead of updating it. hm. what would be the > best advised? I haven't asked yet but I am pretty sure that I am not > allowed to set autoincrement off in db2, because other apps might use > these tables as well... > > -----Ursprüngliche Nachricht----- > Von: Brian McCallister [mailto:[EMAIL PROTECTED] > Gesendet: Donnerstag, 15. Januar 2004 16:44 > An: OJB Users List > Betreff: Re: AW: AW: AW: Two 1:N mappings to one table > > Ah hah! You are allowing DB2 to add the ID via a trigger, aren't you? > OJB doesn't play super nicely with the database doing that for it > behind the scenes, unfortunately. If you are allowed, try using one of > the OJB auto increment modules. I suggest the one that pulls from a db > sequence if that is what you are using in DB2 now. Basically it will > have OJB pull from the sequence and populate the id prior to the insert so that OJB knows the id. > > -Brian > > On Jan 15, 2004, at 10:25 AM, Dirk Manske (Service Respond) wrote: > > >>Unfortunately I cannot provide a testcase for this. But in general, >>after I stored the activity with pm.store(venture), the second >>operation >>pm.store(person) should automagically update activity and not save it >>as a new entry, right? Or will it be only updated, if the activityId >>is known? >>Because I use DB2 with autoincrement for pk's and therefore on the >>first store operation I have no id yet. hm. any idea? >> >>Dirk >> >>-----Ursprüngliche Nachricht----- >>Von: Brian McCallister [mailto:[EMAIL PROTECTED] >>Gesendet: Donnerstag, 15. Januar 2004 04:28 >>An: OJB Users List >>Betreff: Re: AW: AW: Two 1:N mappings to one table >> >>Hmm, fun one. I suspect you may have run into the weird edge case. >> >>I don't have an immediate answer on this -- need to play and dig. >> >>Anyone else hit this before? Any chance you can create a unit test >>that demonstrates the behavior? If so send it to me and I'll check it >>in and dig in (or start prodding). >> >>-Brian >> >>On Jan 14, 2004, at 1:21 PM, Dirk Manske (Service Respond) wrote: >> >> >>>Hi Brian, >>> >>>exactly. Due to copy & paste I assigned a wrong column to the >>>attribute activityId in class Person. But know I experience the >>>problem, that each created activity is stored twice (with different >>>id's). I mean, I know why, I add activity once to the 'person >>>collection' and to the 'venture collection' and do then >>>pm.store(venture) and pm.store(person). I guess I have to follow a >>>different approach?! Say, store first venture, then retrieve activity >>>to store it with person? or how does it work? >>> >>>thx, >>>Dirk >>> >>>-----Ursprüngliche Nachricht----- >>>Von: Brian McCallister [mailto:[EMAIL PROTECTED] >>>Gesendet: Mittwoch, 14. Januar 2004 18:33 >>>An: OJB Users List >>>Betreff: Re: AW: Two 1:N mappings to one table >>> >>>It sounds like there is actually a problem in the mapping from class >>>-> table where the activityId is listed. >>> >>>Any chance you could post the full mapping for these classes, along >>>with the database schema? >>> >>>-Brian >>> >>>On Jan 14, 2004, at 11:33 AM, Dirk Manske (Service Respond) wrote: >>> >>> >>>>Hi, >>>> >>>>yes, i am using pb. Setting auto-retrieve="true" in the >>>>collection-descriptor has not the desired effect, I still get the >>>>following two strange error messages: >>>> >>>>within browser it shows a null pointer execption for Venture when it >>>>tried to retrieve all venture objects associated with activity and >>>>in the tomcat console I get a SQL Exception for class PERSON, state >>>>that activityId is not valid in the context where it is used (db2 >>>>database error message). >>>> >>>>When I set auto-retrieve="false" for PERSON in the >>>>reference-descriptor of class ACTIVITY, the venture objects are >>>>retrieved. no error message. >>>>everything works fine, except - of course I have no person objects >>>>then. >>>> >>>>any idea? >>>> >>>>Dirk >>>> >>>> >>>> >>>> >>>>-----Ursprüngliche Nachricht----- >>>>Von: Brian McCallister [mailto:[EMAIL PROTECTED] >>>>Gesendet: Mittwoch, 14. Januar 2004 15:13 >>>>An: OJB Users List >>>>Betreff: Re: Two 1:N mappings to one table >>>> >>>>Mapping to 1:N's to the same table is fine, heack mapping 1:N's form >>>>one class to itself multiple times works fine. >>>> >>>> From looking at your configs I will venture that you are using the >>>>PB API and one of the collections isn't loading -- try setting >>>>auto-retrieve on the collections, or (these are exclusive) try using >>>>the ODMG API (which will retrieve them automagically) >>>> >>>>-Brian >>>> >>>>On Jan 13, 2004, at 7:58 PM, Dirk Manske wrote: >>>> >>>> >>>>>Hi, >>>>> >>>>>how can I map two tables with each having a 1:N relation to the >>>>>same table? >>>>>I always get a null pointer exception for class Person. >>>>> >>>>>I have three tables: >>>>> >>>>>PERSON with a 1:N relation to ACTIVITY >>>>> >>>>>and >>>>> >>>>>VENTURE with a 1:N relation to ACTIVITY >>>>> >>>>>Table PERSON and VENTURE both references activityId from table >>>>>ACTIVITY. In the repository-user.xml for each table which relates >>>>>to ACTIVITY the collection-descriptor is setup >>>>> >>>>>for table VENTURE: >>>>> >>>>><collection-descriptor >>>>>name="allAssignedActivities" >>>>>element-class-ref="de.plato.Activity" >>>>>orderBy="activityId" >>>>>sort="DESC" >>>>>auto-update="true" > >>>>><inverse-foreignkey field-ref="ventureId" /> >>>>></collection-descriptor> >>>>> >>>>>and for table PERSON: >>>>> >>>>><collection-descriptor >>>>>name="allAssignedActivities" >>>>>element-class-ref="de.plato.Activity" >>>>>orderBy="activityId" >>>>>sort="DESC" >>>>>auto-update="true" > >>>>><inverse-foreignkey field-ref="personId" /> >>>>></collection-descriptor> >>>>> >>>>>for ACTIVITY, both tables are referenced: >>>>> >>>>><reference-descriptor name="person"> class-ref="de.plato.Person" >>>>>refresh="true" >>>>>auto-retrieve="true"> >>>>><foreign-key field-ref="personId" /> >>>>> >>>>>and >>>>> >>>>><reference-descriptor name="venture"> class-ref="de.plato.Venture" >>>>>refresh="true" >>>>>auto-retrieve="true"> >>>>><foreign-key field-ref="ventureId" /> >>>>> >>>>>Unfortunately, this does not work. What do I have to do? >>>>> >>>>>thx, >>>>>Dirk >>>>> >>>>> >>>>>------------------------------------------------------------------- >>>>>- >>>>>- To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>> >>>> >>>> >>>>-------------------------------------------------------------------- >>>>- To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>>>-------------------------------------------------------------------- >>>>- To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>> >>> >>> >>>--------------------------------------------------------------------- >>>To unsubscribe, e-mail: [EMAIL PROTECTED] >>>For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>>--------------------------------------------------------------------- >>>To unsubscribe, e-mail: [EMAIL PROTECTED] >>>For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> >> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: [EMAIL PROTECTED] >>For additional commands, e-mail: [EMAIL PROTECTED] >> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: [EMAIL PROTECTED] >>For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]