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.

Should I modify the source code somewhere in this stack trace?

at
org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(BatchConnectio
n.java:298)

at
org.apache.ojb.broker.util.batch.BatchConnection.commit(BatchConnection.java
:335)

at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localCommit(Connecti
onManagerImpl.java:200)

at
org.apache.ojb.broker.core.PersistenceBrokerImpl.commitTransaction(Persisten
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]

Reply via email to