Hi

I had also a problem with java.util.Date on a Oracle DB. I had to change the
types in my classes to java.sql.Date and it works fine now.

An other way could be a conversion-class for java.util.Date (like
Integer2IntegerFieldConversion) which creates a java.sql.Date from
java.util.Date. 

Let me now if it solves your problem.

Roland Ribi


> -----Original Message-----
> From: Pedro Salgado [mailto:[EMAIL PROTECTED]
> Sent: Thursday, January 01, 1970 2:47 AM
> To: OJB Users List
> Subject: mssql: sqlexception
> 
> 
> 
>   For several reasons, I have been using a OJB/MySQL 
> development platform
> and everything was going ok. The problem was when I chose to 
> test the same
> application with a OJB/MSSQL platform.
> 
> 
>   Apart of some minor changes, I made it all work except for 
> a class (the
> source and OJB description is below) that has a 
> TIMESTAMP/DATETIME mapping
> and that also could be NULL (also tried with NOT NULL <=> 
> nullable="false"
> and didn't work either).
>   I tried Google and it seems a MSSQL JDBC driver bug (don't 
> know if it
> could be a bug in OJB) but I wonder if anyone has came across 
> with this
> problem and solved this or found a way around (please don't 
> tell me I have
> to store the day-month-year on 3 database fields for each 
> date :( or change
> it to a char/varchar field).
> 
>   Below is the error (log file) the DAO, OJB descriptor and 
> SQL for the
> class in question.
> 
> 
>   All help/ideas are welcome,
> 
> 
> Pedro Salgado
> 
> 
> 
> --- LOG FILE
> 
> 12:46:34,503 - DEBUG 
> org.apache.ojb.broker.accesslayer.StatementManager -
> closeResources was called
> 
> 
> 12:46:34,503 - DEBUG 
> org.apache.ojb.broker.accesslayer.JdbcAccessImpl -
> executeInsert : [EMAIL PROTECTED]
> 
> 
> 12:46:34,503 - DEBUG
> org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl 
> - SQL:INSERT
> INTO REVISIONS 
> (id,document,title,edition,date_implementation,date_issued,dat
> e_approval,dat
> e_approval_qa,date_authorization,date_cancelled,date_deadline,
> originator,app
> rover,approver_qa,authorizer,canceller,obs,state,sys_extension) VALUES
> (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
> 
> 
> 12:46:34,519 - ERROR 
> org.apache.ojb.broker.accesslayer.JdbcAccessImpl -
> SQLException during the execution of the insert (for a
> pkg.pkg.dao.Revision): [Microsoft][SQLServer 2000 Driver for 
> JDBC]Unable to
> determine the type of the specified object.
> 
> 
> java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for 
> JDBC]Unable to
> determine the type of the specified object.
>     at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown
> Source)
>     at 
> com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
>     at com.microsoft.jdbc.base.BasePreparedStatement.setObject(Unknown
> Source)
>     at 
> org.apache.ojb.broker.platforms.PlatformDefaultImpl.setObjectF
> orStatement(Un
> known Source)
>     at 
> org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(Unknown
> Source)
>     at 
> org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(Unknown
> Source)
>     at 
> org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Unknown
> Source)
> 
> 
> --- Java class
>     (Date => java.util.Date)
> 
>     private int id = 0;
>     private int document = 0;
>     private String Title = null;
>     private String Edition = null;
>     private Date dateImplementation = null;
>     private Date dateIssued = null;
>     private Date dateApproval = null;
>     private Date dateApprovalQA = null;
>     private Date dateAuthorization = null;
>     private Date dateCancelled = null;
>     private Date dateDeadline = null;
>     private int originator = 0;
>     private int approver = 0;
>     private int approverQA = 0;
>     private int authorizer = 0;
>     private int canceller = 0;
>     private String comment = null;
>     private int State = 0;
>     private String fileExtension = null;
> 
> 
> 
> --- MSSQL SQL
> 
> 
> IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='RI' AND
> name='REVISIONS_FK_1')
>     ALTER TABLE REVISIONS DROP CONSTRAINT REVISIONS_FK_1;
> IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name 
> = 'REVISIONS')
> BEGIN
>      DECLARE @reftable_7 nvarchar(60), @constraintname_7 nvarchar(60)
>      DECLARE refcursor CURSOR FOR
>      select reftables.name tablename, cons.name constraintname
>       from sysobjects tables,
>            sysobjects reftables,
>            sysobjects cons,
>            sysreferences ref
>        where tables.id = ref.rkeyid
>          and cons.id = ref.constid
>          and reftables.id = ref.fkeyid
>          and tables.name = 'REVISIONS'
>      OPEN refcursor
>      FETCH NEXT from refcursor into @reftable_7, @constraintname_7
>      while @@FETCH_STATUS = 0
>      BEGIN
>        exec ('alter table '[EMAIL PROTECTED]' drop constraint
> '[EMAIL PROTECTED])
>        FETCH NEXT from refcursor into @reftable_7, @constraintname_7
>      END
>      CLOSE refcursor
>      DEALLOCATE refcursor
>      DROP TABLE REVISIONS
> END
> 
> 
> CREATE TABLE REVISIONS
> (
>             id INT NOT NULL,
>             document INT NOT NULL,
>             title VARCHAR (200) NOT NULL,
>             edition CHAR (9) NULL,
>             date_implementation DATETIME NULL,
>             date_issued DATETIME NULL,
>             date_approval DATETIME NULL,
>             date_approval_qa DATETIME NULL,
>             date_authorization DATETIME NULL,
>             date_cancelled DATETIME NULL,
>             date_deadline DATETIME NULL,
>             originator INT NULL,
>             approver INT NULL,
>             approver_qa INT NULL,
>             authorizer INT NULL,
>             canceller INT NULL,
>             obs VARCHAR (200) NULL,
>             state INT NOT NULL,
>             sys_extension CHAR (4) NULL,
> 
>     CONSTRAINT REVISIONS_PK PRIMARY KEY(id)
> 
> );
> 
> 
> 
> 
> 
> 
> --- OJB class descriptor
> 
> 
>   <class-descriptor
>         class="pkg.pkg.dao.Revision"
>     table="REVISIONS"
>   >
>                    
>     <field-descriptor
>       id="1"
>       name="id"
>       column="id"
>       jdbc-type="INTEGER"
>       nullable="false"
>       primarykey="true"
>       autoincrement="true" />
> 
>                    
>     <field-descriptor
>       id="2"
>       name="document"
>       column="document"
>       jdbc-type="INTEGER"
>       nullable="false" />
> 
>                    
>     <field-descriptor
>       id="3"
>       name="Title"
>       column="title"
>       jdbc-type="VARCHAR"
>       nullable="false" />
> 
>                    
>     <field-descriptor
>       id="4"
>       name="Edition"
>       column="edition"
>       jdbc-type="CHAR" />
> 
>                    
>     <field-descriptor
>       id="5"
>       name="dateImplementation"
>       column="date_implementation"
>       jdbc-type="TIMESTAMP" />
> 
>                    
>     <field-descriptor
>       id="6"
>       name="dateIssued"
>       column="date_issued"
>       jdbc-type="TIMESTAMP" />
> 
>                    
>     <field-descriptor
>       id="7"
>       name="dateApproval"
>       column="date_approval"
>       jdbc-type="TIMESTAMP" />
> 
>                    
>     <field-descriptor
>       id="8"
>       name="dateApprovalQA"
>       column="date_approval_qa"
>       jdbc-type="TIMESTAMP" />
> 
>                    
>     <field-descriptor
>       id="9"
>       name="dateAuthorization"
>       column="date_authorization"
>       jdbc-type="TIMESTAMP"/>
> 
>                    
>     <field-descriptor
>       id="10"
>       name="dateCancelled"
>       column="date_cancelled"
>       jdbc-type="TIMESTAMP" />
> 
>                    
>     <field-descriptor
>       id="11"
>       name="dateDeadline"
>       column="date_deadline"
>       jdbc-type="TIMESTAMP" />
> 
>                    
>     <field-descriptor
>       id="12"
>       name="originator"
>       column="originator"
>       jdbc-type="INTEGER" />
> 
> 
>                    
>     <field-descriptor
>       id="13"
>       name="approver"
>       column="approver"
>       jdbc-type="INTEGER "/>
> 
>                    
>     <field-descriptor
>       id="14"
>       name="approverQA"
>       column="approver_qa"
>       jdbc-type="INTEGER" />
> 
>                    
>     <field-descriptor
>       id="15"
>       name="authorizer"
>       column="authorizer"
>       jdbc-type="INTEGER" />
>   
> 
>                    
>     <field-descriptor
>       id="16"
>       name="canceller"
>       column="canceller"
>       jdbc-type="INTEGER" />
> 
>                    
>     <field-descriptor
>       id="17"
>       name="comment"
>       column="obs"
>       jdbc-type="VARCHAR" />
> 
>                    
>     <field-descriptor
>       id="18"
>       name="State"
>       column="state"
>       jdbc-type="INTEGER"
>       nullable="false" />
> 
> 
>     <field-descriptor
>       id="19"
>       name="fileExtension"
>       column="sys_extension"
>       jdbc-type="CHAR" />
> 
> </class-descriptor>
> 
> 
> 
> ---------------------------------------------------------------------
> 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