You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by David Zejda <dv...@atlas.cz> on 2004/06/09 18:09:26 UTC

HSQLDB + DATE type

I have a

class Email

  /**
   * @ojb.field
   */
   private Date date;
...

transformed into repository

    <field-descriptor
        name="date"
        column="date"
        jdbc-type="DATE"
    >
    </field-descriptor>

and after calling broker.store() it says:

SQL failure while insert object data for class oit.Email, PK of the given
object
 is [ id=1], object was oit.Email@181ed9e, exception message is [Wrong data
type
]
org.apache.ojb.broker.PersistenceBrokerSQLException: SQL failure while
insert ob
ject data for class oit.Email, PK of the given object is [ id=1], object was
oit
.Email@181ed9e, exception message is [Wrong data type]
        at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAc
cessImpl.java:242)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Persistenc
eBrokerImpl.java:1620)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:1537)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:683)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeAndLinkOneToMan
y(PersistenceBrokerImpl.java:913)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeCollections(Per
sistenceBrokerImpl.java:783)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Persistenc
eBrokerImpl.java:1644)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:1537)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:683)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
ngPersistenceBroker.java:174)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
ngPersistenceBroker.java:174)
        at oit.Main.newAddress(Unknown Source)
        at oit.Main.<init>(Unknown Source)
        at oit.Main.main(Unknown Source)
Caused by: java.sql.SQLException: Wrong data type
        at org.hsqldb.Trace.getError(Unknown Source)
        at org.hsqldb.Trace.error(Unknown Source)
        at org.hsqldb.Column.convertObject(Unknown Source)
        at org.hsqldb.jdbcPreparedStatement.setObject(Unknown Source)
        at
org.apache.ojb.broker.platforms.PlatformDefaultImpl.setObjectForState
ment(PlatformDefaultImpl.java:227)
        at
org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(Stateme
ntManager.java:449)
        at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAc
cessImpl.java:193)
        ... 13 more

So, is there any flaw in combination HSQLDB and Date? I guess, it would be
possible to provide a custom RowReader or something and store dates in e.g.
VARCHAR column.., but it's only a quick hack, not a solution.

Thanks for suggestions

David


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


RE: HSQLDB + DATE type

Posted by Fred McCann <fr...@ampagency.com>.
I had a similar problem with OJB+HSQLDB. This seems to work:

/**
 * Birth Date
 *
 * @ojb.field
 * 		column = "birthdate"
 * 		jdbc-type="TIMESTAMP"
 * 		conversion =
"org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldCon
version"
 */
private java.util.Date birthdate;

Even though it's just a date and not a timestamp, the conversion makes it
happy

- Fred

-----Original Message-----
From: David Zejda [mailto:dvid@atlas.cz]
Sent: Wednesday, June 09, 2004 12:09 PM
To: OJB Users List
Subject: HSQLDB + DATE type


I have a

class Email

  /**
   * @ojb.field
   */
   private Date date;
...

transformed into repository

    <field-descriptor
        name="date"
        column="date"
        jdbc-type="DATE"
    >
    </field-descriptor>

and after calling broker.store() it says:

SQL failure while insert object data for class oit.Email, PK of the given
object
 is [ id=1], object was oit.Email@181ed9e, exception message is [Wrong data
type
]
org.apache.ojb.broker.PersistenceBrokerSQLException: SQL failure while
insert ob
ject data for class oit.Email, PK of the given object is [ id=1], object was
oit
.Email@181ed9e, exception message is [Wrong data type]
        at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAc
cessImpl.java:242)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Persistenc
eBrokerImpl.java:1620)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:1537)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:683)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeAndLinkOneToMan
y(PersistenceBrokerImpl.java:913)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeCollections(Per
sistenceBrokerImpl.java:783)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Persistenc
eBrokerImpl.java:1644)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:1537)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
kerImpl.java:683)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
ngPersistenceBroker.java:174)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
ngPersistenceBroker.java:174)
        at oit.Main.newAddress(Unknown Source)
        at oit.Main.<init>(Unknown Source)
        at oit.Main.main(Unknown Source)
Caused by: java.sql.SQLException: Wrong data type
        at org.hsqldb.Trace.getError(Unknown Source)
        at org.hsqldb.Trace.error(Unknown Source)
        at org.hsqldb.Column.convertObject(Unknown Source)
        at org.hsqldb.jdbcPreparedStatement.setObject(Unknown Source)
        at
org.apache.ojb.broker.platforms.PlatformDefaultImpl.setObjectForState
ment(PlatformDefaultImpl.java:227)
        at
org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(Stateme
ntManager.java:449)
        at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAc
cessImpl.java:193)
        ... 13 more

So, is there any flaw in combination HSQLDB and Date? I guess, it would be
possible to provide a custom RowReader or something and store dates in e.g.
VARCHAR column.., but it's only a quick hack, not a solution.

Thanks for suggestions

David


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: HSQLDB + DATE type

Posted by Thomas Dudziak <to...@first.fraunhofer.de>.
On Wed, 9 Jun 2004, David Zejda wrote:

> So, is there any flaw in combination HSQLDB and Date? I guess, it would be
> possible to provide a custom RowReader or something and store dates in e.g.
> VARCHAR column.., but it's only a quick hack, not a solution.

Nope, the problem lies in the combination java.util.Date (which I assume
you're using) and JDBC (which for most drivers can only work with
java.sql.Date and java.sql.Timestamp).
The solution that Fred McCann pointed out is the preferred one with OJB
(or use java.sql.Date/java.sql.Timestamp in your classes).

I updated the XDoclet module documentation to point that out. Perhaps I
should also add a warning when the module processes such a type to make
this easier ?!

Tom


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org