Re: Problems with OracleAdapter

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Mar 24 2005 - 13:10:41 EST

  • Next message: tnaki..ofthome.net: "mailing list archive"

    Laila,

    I really don't recommend switching from OracleAdapter to generic
    JdbcAdapter. Looking at your exception stack, it looks like a problem is
    with batch updates. So just turn off the batching:

    OracleAdapter adapter = ... extract this from DataNode
    adapter.setSupportsBatchUpdates(false);

    Andrus

    > Hi Cris,
    >
    > I know LONG fields have been deprecated since long ago, but we are still
    > stuck with them as many or our applications are still developed using
    > WebObjects 4.5.1 (using Objective-C) and its Oracle Adaptor
    > links against a very old version of the OCI (around 7.3) that could
    > handle only LONG fields; no LOBs available thou.
    >
    > I'm using 9.0.2 JDBC drivers with Cayenne and when running my
    > application using JdbcAdapter read/write LONG operation is ok.
    > Do you think It is possible to use OracleAdapter?
    > If it is impossible, how I can customize PK generation using a
    > JdbcAdapter?
    >
    > Thanks
    > Laila
    >
    >
    >
    > On Wed, 23 Mar 2005 10:13:01 -0500, Cris Daniluk
    > <cris.danilu..laraview.com> wrote:
    >> A most likely guess is that your Oracle JDBC driver doesn't support
    >> LONGs. LONGs are deprecated and should not be used anymore, so if
    >> you're using an old version of Oracle with a new version of the
    >> driver... Could be a problem.
    >>
    >> > Hi,
    >> >
    >> > I would like use an OracleAdapter in my application because I
    >> > want to customize PK generation.
    >> > If I create a dataNode with a DbAdapter
    >> > org.objectstyle.cayenne.dba.JdbcAdapter works very well, but
    >> > if I set DbAdapter
    >> > org.objectstyle.cayenne.dba.oracle.OracleAdapter an error occur.
    >> >
    >> > INFO 2005-03-23 14:28:04,854 *** error.
    >> > java.sql.SQLException: operation not allowed: streams type
    >> > cannot be used in batching
    >> > at
    >> > oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    >> > at
    >> > oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    >> > at
    >> > oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePrep
    >> aredStatement.java:3999)
    >> > at
    >> > org.objectstyle.cayenne.access.DataNode.runBatchUpdateAsBatch(
    >> DataNode.java:535)
    >> > at
    >> > org.objectstyle.cayenne.dba.oracle.OracleDataNode.runBatchUpda
    >> teAsBatch(OracleDataNode.java:355)
    >> > at
    >> > org.objectstyle.cayenne.access.DataNode.runBatchUpdate(DataNod
    >> e.java:498)
    >> > at
    >> > org.objectstyle.cayenne.access.DataNode.performQueries(DataNod
    >> e.java:353)
    >> > at
    >> > org.objectstyle.cayenne.access.ContextCommit.commit(ContextCom
    >> mit.java:192)
    >> > at
    >> > org.objectstyle.cayenne.access.DataContext.commitChanges(DataC
    >> ontext.java:1266)
    >> > at
    >> > org.objectstyle.cayenne.access.DataContext.commitChanges(DataC
    >> ontext.java:1236)
    >> > [...]
    >> >
    >> > I'm using a simple ExtendedType implementation for Oracle
    >> > LONG fields (view also
    >> > http://www.objectstyle.org/cayenne/lists/cayenne-user/2005/01/
    >> 0193.html)
    >> > with a method
    >> >
    >> > public void setJdbcObject( java.sql.PreparedStatement st,
    >> > java.lang.Object val,
    >> > int pos,
    >> > int type,
    >> > int precision) throws
    >> > java.lang.Exception {
    >> > if (val != null) {
    >> > com.extrapola.cayenne.oracle.LongType longType;
    >> > java.io.StringReader in;
    >> >
    >> > longType = (com.extrapola.cayenne.oracle.LongType)val;
    >> >
    >> > in = new java.io.StringReader(longType.string());
    >> > st.setCharacterStream(pos, in, longType.string().length());
    >> > } else {
    >> > super.setJdbcObject(st, val, pos, type, precision);
    >> > }
    >> > }
    >> >
    >> >
    >> > Some suggestion?
    >> >
    >> > Thanks
    >> > Laila
    >> >
    >>



    This archive was generated by hypermail 2.0.0 : Thu Mar 24 2005 - 13:10:43 EST