Hi Andy,

maybe you should use the auto-update Tag in your reference-descriptor.

Norbert

> -----Urspr�ngliche Nachricht-----
> Von: Andy Czerwonka [mailto:[EMAIL PROTECTED]
> Gesendet: Dienstag, 23. September 2003 15:58
> An: OJB Users List
> Betreff: Re: PLEASE HELP!!!! No recursion??????
> 
> 
> One more thing...
> 
> One the one record in the database it does produce, the UNQ_ID = 1 and
> the NXT_UNQ_ID = 2, just as expected, But, there's NO SECOND RECORD!
> Very weird.  Looks like the SequenceImpl correctly assigns the UNQ_ID
> and understand the foreign key relationship just fine, but 
> can't persist
> the recursive behaviour.
> 
> On Tue, 2003-09-23 at 07:50, Andy Czerwonka wrote:
> > BTW - on a subsequent test that does the query again, it 
> fails.  I does
> > only see the 1 record and doesn't build my linked list.  Looks like
> > there is some caching.  Anyone know what I'm doing wrong 
> here or do we
> > just have a bug?
> > 
> > On Tue, 2003-09-23 at 07:42, Andy Czerwonka wrote:
> > > I'm having a problem with a very simple mapping.  I've 
> went through all
> > > the docs and examples, and afaik, the mappings are right. 
> I'll provide
> > > some context.
> > > 
> > > Database
> > > ========
> > > create table LBRTRY_Q (UNQ_ID number(12) not null, 
> MSG_TXT clob not /
> > > null, STTS_CODE number(8) not null, NXT_UNQ_ID number(12));
> > > 
> > > alter table LBRTRY_Q add constraint LBRTRY_Q_PK primary 
> key (UNQ_ID) /
> > > using index;
> > > 
> > > create sequence LBRTRY_Q_SEQ maxvalue 999999999999 cycle;
> > > 
> > > 
> > > Database And User Repositories
> > > ==============================
> > > <jdbc-connection-descriptor
> > > 
> > >   jcd-alias="default"
> > >   platform="Oracle9i"
> > >   jdbc-level="2.0"
> > >   driver="oracle.jdbc.driver.OracleDriver"
> > >   protocol="jdbc"
> > >   subprotocol="oracle:thin"
> > >   dbalias="@locahost:1521:iadb"
> > >   username="user1"
> > >   password="user1"
> > >   eager-release="false"
> > >   batch-mode="false"
> > >   useAutoCommit="0"
> > >   ignoreAutoCommitExceptions="false"
> > >   default-connection="true">
> > >           
> > > <sequence-manager
> > > 
> className="org.apache.ojb.broker.util.sequence.SequenceManager
> NextValImpl"/>
> > > 
> > > </jdbc-connection-descriptor>
> > > 
> > > 
> > > <class-descriptor
> > >             class="com.clrstream.chr.mm.persistence.HL7Message"
> > >             proxy="dynamic"
> > >             table="LBRTRY_Q">
> > > 
> > >       <field-descriptor
> > >          name="id"
> > >          column="UNQ_ID"
> > >          jdbc-type="INTEGER"
> > >          primarykey="true"
> > >          autoincrement="true"
> > >          sequence-name="LBRTRY_Q_SEQ"/>
> > > 
> > >       <field-descriptor
> > >          name="value"
> > >          column="MSG_TXT"
> > >          jdbc-type="VARCHAR"/>
> > > 
> > >       <field-descriptor
> > >          name="status"
> > >          column="STTS_CODE"
> > >          jdbc-type="INTEGER"/>
> > > 
> > >       <field-descriptor
> > >          name="nextId"
> > >          column="NXT_UNQ_ID"
> > >          jdbc-type="INTEGER"
> > >          access="anonymous"/>
> > > 
> > >       <reference-descriptor
> > >          name="next"
> > >          class-ref="com.clrstream.chr.mm.persistence.HL7Message">
> > >           <foreignkey field-ref="nextId"/>
> > >       </reference-descriptor>
> > > 
> > >    </class-descriptor>
> > > 
> > > 
> > > Important Bits Of The Persistent Java POJO
> > > ==========================================
> > > public class HL7Message
> > > {
> > > private static int UNPROCESSED = 67;
> > > private static int MAX_LENGTH = 1
> > > 
> > > protected int id;
> > > protected String value = null;
> > > protected int status = UNPROCESSED;
> > > protected HL7Message next;
> > > 
> > > public HL7Message()
> > > {
> > > }
> > > 
> > > public HL7Message(String value)
> > > {
> > >   int messageLength = value.length();
> > >   if (messageLength > MAX_LENGTH)
> > >   {
> > >           this.value = value.substring(0, MAX_LENGTH);
> > >           this.next = new HL7Message(value.substring(MAX_LENGTH));
> > >   }
> > >   else
> > >   {
> > >           this.value = value;
> > >   }
> > > }
> > > 
> > > }
> > > 
> > > 
> > > Important Bit Of Unit Test
> > > ==========================
> > > broker = PersistenceBrokerFactory.defaultPersistenceBroker();
> > > ...
> > > HL7Message msg = new HL7Message("123");
> > > broker.beginTransaction();
> > > broker.store(msg);
> > > broker.commitTransaction();
> > > Query query = new QueryByCriteria(HL7Message.class, null);
> > > Collection results = broker.getCollectionByQuery(query);
> > > assertTrue("Found 1 Message", results.size() == 1);
> > > HL7Message foundMessage = (HL7Message) results.toArray()[0];
> > > assertTrue("Recursively 3 deep", 
> foundMessage.getNext().getNext() !=
> > > null);
> > > 
> > > 
> > > PROBLEM
> > > =======
> > > 
> > > You can see that the table is simple a queue that breaks 
> up a message
> > > into 4k bits, actually for testing, simply string of 
> length 1.  When I
> > > broker.store(), it only creates 1 record in the database. 
>  The WEIRD
> > > part is that this test PASSES!!  Looking at the database, 
> it shouldn't. 
> > > Is there some kind of caching going on?
> -- 
> andy
> 
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to