Hi again,
> > > >
> > > > > I see what the problem is, but am not sure what the solution
is.
> > > > >
> > > > > I have a an abstract class that is implemented with a number
of
> > > >classes.
> > > > > I'm trying to create a unique key for an instance class, but
when
> >I
> > > > > check there are no field descriptors for the base class.
> > > >
> > > >Have you tried
> > > >Class realClass = abstractBaseClass.getClass();
> > > >ClassDescriptor cld = broker.getClassDescriptor(realClass);
> > > >to get the real class descriptor? Then it should possible to get
the
> > > >field.
> > >
> > > This doesn't help because I'm just calling the getUniqueId within
OJB
> > > and I don't have any control over what it does except through
> > > the repository.
> >
> >
> >I do not understand this. You declare your 'valueId' as a
autoincrement
> >field, but in your stack trace it seems you do a direct call
> >PB.getUniqueId?
>
> Well I did add this because 0.9.8 was complaining about this field
being
> absent. I have removed it without any change in the behavior.
>
>
> > > >
> >
>>>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getUniqueI
> > > > > >>> >
> > >
>gov.lanl.Database.OJBDatabaseMgr.getNextSeq(OJBDatabaseMgr.java:582)
> > > > > >>> > at
> > > > > >>> >
> > > > >
> > > >
> >
>>>gov.lanl.COAS.AbstractObservationValue_.<init>(AbstractObservationVal
> >
> >Could you post a code snip to ease my understanding?
> >But by the way this seems to be a bug.
>
> I'm not sure what you mean by a code snippet. When I call the class
> constructor,
> I call getUniqueId with the class name and attribute:
>
> This is the specific method I call .
> /**
> * return next number in a persistent sequence
> */
> public long getNextSeq(Class clazz, String fieldName) {
> cat.debug("getNextSeq: "+clazz.getName() + " "+fieldName);
> // return sequenceManager.getUniqueId(clazz, fieldName);
> try {
// get the CLD for the base class
ClassDescriptor cld = broker.getClassDescriptor(clazz);
if( (cld.isAbstract || cld.isInterface()) &&
cld.isExtent())
{
// get the first found extent class
clazz = cld.getExtentClasses().get(0) // we grap
the first
}
> return broker.getUniqueId(clazz, fieldName);
> } catch (org.apache.ojb.broker.PersistenceBrokerException e)
{
> cat.error("Can't get ID from broker: " + clazz.getName()
+ " "
> + fieldName, e);
>
> // System.exit(1);
> return 0;
> }
> }
>
Maybe this could be a workaround for your problem.
Keep in mind that getUniqueId(clazz, fieldName) was deprecated
and will be replaced by getUniqueId(FieldDescriptor field).
What I don't understand is, why you need a getNextSeq method,
when you define autoincrement fields? OJB does all sequence key
generation automatic for you.
HTH
regards,
Armin
> thanks,
>
> Dave
>
>
> >Armin
> >
> >
> > >
> > > >Or define your base class with all fields in the repository file
and
> > > >declare
> > > >all extent-classes in the class-descriptor. Then the default
sequence
> > > >manager implementations should be able to generate a id unique
> > > >across all extents.
> > > >Or define only the abstract class with all extent-classes, then
you
> > > >should be
> > > >able to get one of the extent classes.
> > >
> > > This is how I have it defined in my repository_user.xml
> > >
> > > <class-descriptor class="gov.lanl.COAS.ObservationValue_">
> > > <extent-class class-ref="gov.lanl.COAS.Multimedia_"/>
> > > <extent-class class-ref="gov.lanl.COAS.NoInformation_"/>
> > > <extent-class class-ref="gov.lanl.COAS.Numeric_"/>
> > > <extent-class class-ref="gov.lanl.COAS.ObservationId_"/>
> > > <extent-class class-ref="gov.lanl.COAS.QualifiedCodeInfo_"/>
> > > <extent-class class-ref="gov.lanl.COAS.QualifiedPersonId_"/>
> > > <extent-class class-ref="gov.lanl.COAS.Range_"/>
> > > <extent-class class-ref="gov.lanl.COAS.String_"/>
> > > <extent-class class-ref="gov.lanl.COAS.TimeSpan_"/>
> > > <extent-class
> >class-ref="gov.lanl.COAS.UniversalResourceIdentifier_"/>
> > > <extent-class class-ref="gov.lanl.COAS.Empty_"/>
> > > </class-descriptor>
> > >
> > > and an example for one of the extent classes
> > >
> > > <class-descriptor
> > > isolation-level="read-uncommitted"
> > > class="gov.lanl.COAS.Empty_"
> > > table="OjbEmpty_"
> > > >
> > > <field-descriptor id="1"
> > > name="valueId"
> > > jdbc-type="INTEGER"
> > > column="valueId"
> > > primarykey="true"
> > > autoincrement="true"
> > > />
> > >
> > > </class-descriptor>
> > >
> > > there is no table for the ObservationValue_ class because it is an
> >Abstract
> > > Class.
> > > this is what I've been using for 0.9.7 and it works fine. this
fails
> >under
> > > 0.9.8
> > > when trying to get a uniqueid for each of the extent classes. I
think
> >this
> > > is what
> > > you are describing in your last suggestion.
> > >
> > > thanks,
> > > Dave
> > >
> > >
> > > >HTH
> > > >regards,
> > > >Armin
> > > >
> > > > >
> > > > > This all worked fine in 0.9.7, but perhaps there has been some
> >change
> > > > > in the semantics? We put the necessary table elements in each
> > > >instance
> > > > > of the class but not in the table for the base class (which
> >actually
> > > > > doesn't exist).
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Dave
> > > > >
> > > > > At 11:35 AM 12/30/2002 -0700, David Forslund wrote:
> > > > > >When I put a check inside of the getFieldDescriptor, I find
that
> >it
> > > >is
> > > > > >being called by HighLowSequence
> > > > > >with the argument ojbConcreteClass and is returning a null
for
> >the
> > > > > >field. Is this what is expected?
> > > > > >
> > > > > >Dave
> > > > > >
> > > > > >At 10:43 AM 12/30/2002 -0700, David Forslund wrote:
> > > > > >>It wasn't null in my code that called the OJB code. This
code
> >has
> > > >been
> > > > > >>working fine in 0.9.7. If the xml needed to change for
some
> > > >reason,
> > > > > >>it might have caused this. I'm passing in a string of a
> >variable
> > > >that
> > > > > >>is defined in my table. Whether OJB properly connects a
> >"Field"
> > > > > >>to that table is where the problem may be. It did in the
past
> > > >without
> > > > > >>any problem. I have a hard time telling exactly what
changed
> > > >between
> > > > > >>these two versions.
> > > > > >>
> > > > > >>Thanks,
> > > > > >>
> > > > > >>Dave
> > > > > >>At 01:49 PM 12/30/2002 +0100, Armin Waibel wrote:
> > > > > >>>Hi David,
> > > > > >>>
> > > > > >>>the sequence generator implementation now only generate
> > > > > >>>id's for fields declared in the repository.
> > > > > >>>I think you got this NullPointerException, because SM get a
> > > > > >>>'null' field:
> > > > > >>>
> > > > > >>><snip SequenceManagerHelper>
> > > > > >>>public static String buildSequenceName(
> > > > > >>>PersistenceBroker brokerForClass, FieldDescriptor field)
> > > > > >>> {
> > > > > >>>48--->!!! ClassDescriptor cldTargetClass =
> > > >field.getClassDescriptor();
> > > > > >>> String seqName = field.getSequenceName();
> > > > > >>>.....
> > > > > >>></snip>
> > > > > >>>
> > > > > >>>So check your code if the given FiledDescriptor wasn't
null.
> > > > > >>>
> > > > > >>>HTH
> > > > > >>>
> > > > > >>>regards,
> > > > > >>>Armin
> > > > > >>>
> > > > > >>>----- Original Message -----
> > > > > >>>From: "David Forslund" <[EMAIL PROTECTED]>
> > > > > >>>To: "OJB Users List" <[EMAIL PROTECTED]>
> > > > > >>>Sent: Monday, December 30, 2002 1:33 AM
> > > > > >>>Subject: Re: problems with ojb 0.9.8
> > > > > >>>
> > > > > >>>
> > > > > >>> > I'm trying to upgrade from 0.9.7 to 0.9.8 and am having
some
> > > >problems
> > > > > >>>that
> > > > > >>> > I don't understand yet.
> > > > > >>> >
> > > > > >>> > I'm getting the warning about not finding an
autoincrement
> > > >attribute
> > > > > >>>for a
> > > > > >>> > class. I'm not sure when
> > > > > >>> > I have to have an autoincrement attribute, but the
> >primarykey
> > > >for the
> > > > > >>>class
> > > > > >>> > I'm using is a varchar
> > > > > >>> > so that autoincrement doesn't seem appropriate.
> > > > > >>> >
> > > > > >>> > Subsequently, I get an null pointer exception error in
the
> > > > > >>> > SequenceManagerHelper that I don't understand:
> > > > > >>> > java.lang.NullPointerException
> > > > > >>> > at
> > > > > >>> >
> > > > >
> > > >
> >
>>>org.apache.ojb.broker.util.sequence.SequenceManagerHelper.buildSequen
> > > >ceN
> > > > > >>>ame(SequenceManagerHelper.java:48)
> > > > > >>> > at
> > > > > >>> >
> > > > >
> > > >
> >
>>>org.apache.ojb.broker.util.sequence.SequenceManagerHiLoImpl.getUnique
> > > >Id(
> > > > > >>>SequenceManagerHiLoImpl.java:49)
> > > > > >>> > at
> > > > > >>> >
> > > > >
> > > >
> >
>>>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getUniqueId(Pers
> > > >ist
> > > > > >>>enceBrokerImpl.java:2258)
> > > > > >>> > at
> > > > > >>> >
> > > > >
> > > >
> >
>>>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getUniqueI
> > > >d(D
> > > > > >>>elegatingPersistenceBroker.java:242)
> > > > > >>> > at
> > > > > >>> >
> > >
>gov.lanl.Database.OJBDatabaseMgr.getNextSeq(OJBDatabaseMgr.java:582)
> > > > > >>> > at
> > > > > >>> >
> > > > >
> > > >
> >
>>>gov.lanl.COAS.AbstractObservationValue_.<init>(AbstractObservationVal
> > > >ue_
> > > > > >>>.java:54)
> > > > > >>> > at gov.lanl.COAS.Empty_.<init>(Empty_.java:31)
> > > > > >>> >
> > > > > >>> > I'm pretty sure that it is being called correctly from
my
> >code
> > > >(which
> > > > > >>>works
> > > > > >>> > fine in 0.9.7), but it is failing now.
> > > > > >>> >
> > > > > >>> > An unrelated warning in a different application is that
OJB
> >says
> > > >I
> > > > > >>>should
> > > > > >>> > use addLike() for using LIKE, but it
> > > > > >>> > seems to use the right code anyway. Is this just a
> >deprecation
> > > >issue?
> > > > > >>>I
> > > > > >>> > don't see why it bothers
> > > > > >>> > to tell me this, if it can figure what to do anyway.
> > > > > >>> >
> > > > > >>> > Thanks,
> > > > > >>> >
> > > > > >>> > Dave
> > > > > >>> >
> > > > > >>> >
> > > > > >>> > --
> > > > > >>> > 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]>
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >--
> > > >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]>