Eike Stepper <[EMAIL PROTECTED]> writes:

> Hi,
>
> Does anybody know, why I get an SQLException if I try to insert a NULL value?
> I use embedded mode (db-derby-10.1.2.1-bin).
> On a windows system I created following table:
>
> CREATE TABLE CDO_CLASS (
>       CID INTEGER NOT NULL,
>       NAME VARCHAR(255) NOT NULL,
>       PARENTNAME VARCHAR(255),
>       TABLENAME VARCHAR(127) NOT NULL,
>       PID INTEGER NOT NULL,
>       CONSTRAINT CID_CDO_CLASS PRIMARY KEY (CID))
> CREATE UNIQUE INDEX CDO_CLASS_NAME ON CDO_CLASS (NAME)
> CREATE INDEX CDO_CLASS_PID ON CDO_CLASS (PID)
>
>
> This statement leads to the exception:
>
> [DEBUG] net4j.server.mapper: INSERT INTO CDO_CLASS VALUES (1, 
> 'library.Library', NULL, 'LIBRARY', 1)
> Exception in thread "pool-1-thread-1" 
> org.springframework.dao.DataIntegrityViolationException: 
> PreparedStatementCallback; SQL [INSERT INTO CDO_CLASS VALUES (?, ?, ?, ?, 
> ?)]; An attempt was made to get a data value of type 'VARCHAR' from a data 
> value of type '0'.; nested exception is 
> org.apache.derby.impl.jdbc.EmbedSQLException: An attempt was made to get a 
> data value of type 'VARCHAR' from a data value of type '0'.
> SQL Exception: An attempt was made to get a data value of type 'VARCHAR' from 
> a data value of type '0'.
>       at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
>
>       at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.ConnectionChild.newSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.dataTypeConversion(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.setNull(Unknown 
> Source)
>       at 
> org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:95)
[...]

It seems like setNull() is called with 0 as type id (second argument)
at line 95 in StatementCreatorUtils.java. It should work if you change
the type id to java.sql.Types.VARCHAR.

-- 
Knut Anders

Reply via email to