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)
        at 
org.springframework.jdbc.core.JdbcTemplate$ArgPreparedStatementSetter.setValues(JdbcTemplate.java:1070)
        at 
org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:680)
        at 
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:454)
        at 
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:676)
        at 
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:738)
        at 
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:746)
        at org.eclipse.emf.cdo.server.impl.MapperImpl.sql(MapperImpl.java:651)
        at 
org.eclipse.emf.cdo.server.impl.MapperImpl.insertClass(MapperImpl.java:394)
        at 
org.eclipse.emf.cdo.server.protocol.DescribePackageIndication.receiveClasses(DescribePackageIndication.java:79)
        at 
org.eclipse.emf.cdo.server.protocol.DescribePackageIndication.indicate(DescribePackageIndication.java:46)
        at 
org.eclipse.net4j.core.impl.ChannelImpl$SignalTask.processSignal(ChannelImpl.java:853)
        at 
org.eclipse.net4j.core.impl.ChannelImpl$SignalTask.run(ChannelImpl.java:789)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

Thanks for any hint ;-)
/Eike

Reply via email to