Hi there,

I'm creating a kind of POJO persistence API with H2 as the backend.
But I'm facing the following error when I try to set a java.util.Date
object into a "other" column:

----
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Hexadezimal
Zahl mit einer ungeraden Anzahl Zeichen: "2012-06-22 14:57:36.885"
Hexadecimal string with odd number of characters: "2012-06-22
14:57:36.885"; SQL statement:
INSERT INTO test VALUES (?,?) -- (?1, ?2) [90003-166]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
329)
        at org.h2.message.DbException.get(DbException.java:169)
        at org.h2.message.DbException.get(DbException.java:146)
        at org.h2.util.StringUtils.convertHexToBytes(StringUtils.java:990)
        at org.h2.value.Value.convertTo(Value.java:823)
        at org.h2.table.Column.convert(Column.java:143)
        at org.h2.command.dml.Insert.insertRows(Insert.java:112)
        at org.h2.command.dml.Insert.update(Insert.java:84)
        at org.h2.command.CommandContainer.update(CommandContainer.java:73)
        at org.h2.command.Command.executeUpdate(Command.java:226)
        at
org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:
181)
        at de.root1.sos.SqlTest.main(SqlTest.java:30)
----

Sample to reproduce this issue:

----
package de.root1.sos;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.UUID;

public class SqlTest {
    public static void main(String[] args) throws SQLException {
        String jdbcUrl = "jdbc:h2:/tmp/test;FILE_LOCK=SERIALIZED";
        Connection connection = DriverManager.getConnection(jdbcUrl,
"sa", "");
        Statement createTableStmnt = connection.createStatement();
        createTableStmnt.executeUpdate("CREATE TABLE test (id UUID
PRIMARY KEY, dateObject OTHER);");
        PreparedStatement prepareStatement =
connection.prepareStatement("INSERT INTO test VALUES (?,?)");
        prepareStatement.setObject(1, UUID.randomUUID());
        prepareStatement.setObject(2, new Date());
        prepareStatement.execute();
    }
}
----

What's wrong with the code?

I know, it would be somehow better to use the "DATE" type for storing
dates, but for this scenario I need "OTHER" type (Object) ...


Any ideas?

br,
Alex

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to