Try to change repository descriptor by setting batch-mode property to
false. Batch mode is not supported by some version of Sybase(ASA 7 for
example)
"Brian Chaplin" <[EMAIL PROTECTED]>
Sent by: news <[EMAIL PROTECTED]>
07.07.2003 16:44
Please respond to "OJB Users List"
To: [EMAIL PROTECTED]
cc:
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.
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]