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]

Reply via email to