Armin,
It worked like a champ.
Definitely a need for some java doc before release 1.0 :)
Thanks for the quick response!
Brian
"Armin Waibel" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Hi Brain,
>
> ----- Original Message -----
> From: "Brian Chaplin" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, July 07, 2003 2:44 PM
> Subject: Re: How do I customize insert for Sybase identity columns?
>
>
> > Armin,
> > Using SequenceManagerInMemoryImpl didn't work.  It looks like the
> commands
> > issued in the afterInsert callback are on another connection
> regardless of
> > the memory manager being used.
>
> with the latest version of OJB (more exact version > rc2) the
> PersistenceAware callback methods retrieve a
> PersistenceBroker instance
> e.g.
> public void afterInsert(PersistenceBroker broker)
>             throws PersistenceBrokerException;
>
> with broker.serviceConnectionManager().getConnection()
> you will retrieve the current used connection (don't close
> the connection after use!! - will be done by OJB, only close
> your statement). Then fire your statement.
>
> To isolate your problem, don't use batch-mode
> 'true' in jdbc-connection-descriptor.
> If you don't use CVS please update
> ConnectionManagerImpl#setBatchMode(boolean mode)
> with
>
> return batchMode && platform.supportsBatchOperations();
>
> or get latest from CVS. This ensure that if batch-mode 'false'
> was set, batch mode definitely was not used.
>
> Now try again and post your stack trace ;-)
>
> regards,
> Armin
>
> >
> > Should I modify the source code somewhere in this stack trace?
> >
> > at
> >
> org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(BatchConne
> ctio
> > n.java:298)
> >
> > at
> >
> org.apache.ojb.broker.util.batch.BatchConnection.commit(BatchConnection.
> java
> > :335)
> >
> > at
> >
> org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localCommit(Conn
> ecti
> > onManagerImpl.java:200)
> >
> > at
> >
> org.apache.ojb.broker.core.PersistenceBrokerImpl.commitTransaction(Persi
> sten
> > ceBrokerImpl.java:385)
> >
> > at
> >
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.commitTransaction
> (Del
> > egatingPersistenceBroker.java:120)
> >
> >
> > "Armin Waibel" <[EMAIL PROTECTED]> wrote in message
> > news:[EMAIL PROTECTED]
> > > Hi Brain,
> > >
> > > use another SM implementation (e.g. SequenceManagerInMemoryImpl)
> > > or implement your own SequenceManager.
> > >
> > > HiLo-SM implementation use intern a new connection (because
> > > we want to avoid 'rollback trouble'), thus your setting is made
> > > on the wrong connection.
> > >
> > > regards,
> > > Armin
> > >
> > > ----- Original Message -----
> > > From: "Brian Chaplin" <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Thursday, July 03, 2003 8:17 PM
> > > Subject: How do I customize insert for Sybase identity columns?
> > >
> > >
> > > > I'm trying to handle sybase and SQL Server identity columns by
> > > allowing OJB
> > > > to control the sequence number generation through the
> > > > SequenceManagerHighLowImpl.
> > > >
> > > > However, to do this I need to issue a "set identity_insert
> tablename
> > > on"
> > > > before the actual insert statement is executed?
> > > >
> > > > I did this in the afterInsert method of my BrokerAware persistence
> > > object as
> > > > follows:
> > > >
> > > > Connection conn = getConnection();
> > > >
> > > > stmt = conn.createStatement();
> > > >
> > > > stmt.execute("set identity_insert mcsp_test on");
> > > >
> > > > stmt.close();
> > > >
> > > >
> > > >
> > > > Although the set statment was executed successfully, when the
> > > persistence
> > > > broker issued the insert command, it still failed.
> > > >
> > > > afterInsert
> > > >
> > > > 1057255340516|0|1|statement||set identity_insert mcsp_test on
> > > >
> > > > 1057255340516|0|0|batch|INSERT INTO mcsp_test (id,col1) VALUES
> (?,?)
> > > |INSERT
> > > > INTO mcsp_test (id,col1) VALUES ('97','a13')
> > > >
> > > > 1057255340531|15|0|statement|INSERT INTO mcsp_test (id,col1)
> VALUES
> > > (?,?)
> > > > |INSERT INTO mcsp_test (id,col1) VALUES ('97','a13')
> > > >
> > > > [org.apache.ojb.broker.accesslayer.ConnectionManagerImpl] ERROR:
> > > Commit on
> > > > underlying connection failed, try to rollback
> > > >
> > > > JZ0BE: BatchUpdateException: Error occurred while executing batch
> > > statement:
> > > > Explicit value specified for identity field in table 'mcsp_test'
> when
> > > > IDENTITY_INSERT is set to OFF.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > I'm not sure why.  Perhaps it was issued on another connection in
> my
> > > pool
> > > > but this still fails even for a singleton connection.
> > > >
> > > > Is there a way I can override how the persistence broker is
> > > implementing the
> > > > insert statement?
> > > >
> > > > Or is there a way I can customize the insert statement to issue a
> "set
> > > > command"?
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > ---------------------------------------------------------------------
> > > > 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]

Reply via email to