google-code-export / h2database

Automatically exported from code.google.com/p/h2database
0 stars 1 forks source link

org.h2.jdbc.JdbcSQLException: Data conversion error converting #246

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
This is probably not really a bug, maybe just an unhelpful error message.

What steps will reproduce the problem?
(simple SQL scripts or simple standalone applications are preferred)
1. Using JPA and mapping a one-to-many field to the wrong column:
   @OneToMany(mappedBy = "wrong_target_field_name", cascade = CascadeType.ALL)

What is the expected output? What do you see instead?

I think it may have been helpful it the error message mentioned the
entity and field into which the data is being set,
because I kept on looking in the wrong entity for the bug..

2010-10-28 00:42:55,116:ERROR   2. PreparedStatement.executeUpdate() FAILED! 
insert into EBR_PMS_PLATFORM_PER_PACKAGE (id, PACKAGE_ID, PLATFORM, STATUS) 
values (null, 1, 'any', 'NOT_INSTALLED') {FAILED after 41 msec}    - 
jdbc.sqltiming
org.h2.jdbc.JdbcSQLException: Data conversion error converting "'any' (ID 
INTEGER DEFAULT (NEXT VALUE FOR 
PUBLIC.SYSTEM_SEQUENCE_B35D1216_2A6E_456B_8350_ED100F869A54) NOT NULL 
NULL_TO_DEFAULT SEQUENCE 
PUBLIC.SYSTEM_SEQUENCE_B35D1216_2A6E_456B_8350_ED100F869A54)"; SQL statement:
insert into EBR_PMS_PLATFORM_PER_PACKAGE (id, PACKAGE_ID, PLATFORM, STATUS) 
values (null, ?, ?, ?) [90021-144]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
    at org.h2.message.DbException.get(DbException.java:167)
    at org.h2.message.DbException.get(DbException.java:144)
    at org.h2.table.Column.convert(Column.java:149)
    at org.h2.constraint.ConstraintReferential.checkRowOwnTable(ConstraintReferential.java:326)
    at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:271)
    at org.h2.table.Table.fireConstraints(Table.java:813)
    at org.h2.table.Table.fireAfterRow(Table.java:830)
    at org.h2.command.dml.Insert.insertRows(Insert.java:128)
    at org.h2.command.dml.Insert.update(Insert.java:86)
    at org.h2.command.CommandContainer.update(CommandContainer.java:69)
    at org.h2.command.Command.executeUpdate(Command.java:201)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:129)
    at net.sf.log4jdbc.PreparedStatementSpy.executeUpdate(PreparedStatementSpy.java:1022)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2186)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2666)
    at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
    at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
    at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:636)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:628)
    at org.hibernate.engine.EJB3CascadingAction$1.cascade(EJB3CascadingAction.java:28)
    at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291)
    at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239)
    at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
    at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:319)
    at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:265)
    at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:242)
    at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
    at org.hibernate.engine.Cascade.cascade(Cascade.java:153)
    at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:479)
    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:357)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
    at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
    at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
    at org.apache.openejb.persistence.JtaEntityManager.persist(JtaEntityManager.java:110)
...
2010-10-28 00:42:55,127:WARN    SQL Error: 90021, SQLState: 90021   - 
org.hibernate.util.JDBCExceptionReporter
2010-10-28 00:42:55,127:ERROR   Data conversion error converting "'any' (ID 
INTEGER DEFAULT (NEXT VALUE FOR 
PUBLIC.SYSTEM_SEQUENCE_B35D1216_2A6E_456B_8350_ED100F869A54) NOT NULL 
NULL_TO_DEFAULT SEQUENCE 
PUBLIC.SYSTEM_SEQUENCE_B35D1216_2A6E_456B_8350_ED100F869A54)"; SQL statement:
insert into EBR_PMS_PLATFORM_PER_PACKAGE (id, PACKAGE_ID, PLATFORM, STATUS) 
values (null, ?, ?, ?) [90021-144]  - org.hibernate.util.JDBCExceptionReporter

What version of the product are you using? On what operating system, file
system, and virtual machine?

Do you know a workaround?
Use the correct mappedBy value

How important/urgent is the problem for you?
not that urgent

In your view, is this a defect or a feature request?
feature request

Original issue reported on code.google.com by ama...@gmail.com on 27 Oct 2010 at 11:04

GoogleCodeExporter commented 9 years ago
Well, I guess the error message could be worse. At least you know what data was 
converted, and what the column was. I'm afraid it's not so easy to improve the 
error message. Patches are welcome of course! But I will not try to change the 
error message in this case, sorry.

Original comment by thomas.t...@gmail.com on 30 Oct 2010 at 2:46

GoogleCodeExporter commented 9 years ago
Look at your domain classes. Sometimes two domain point same table. For 
instance:

@Entity
@Table(name = "TABLE_EMPLOYEE")
public class MANAGER {
   ....
}

@Entity
@Table(name = "TABLE_EMPLOYEE")
public class EMPLOYEE {
   ....
}

Original comment by rayyil...@gmail.com on 26 Sep 2011 at 11:27

GoogleCodeExporter commented 9 years ago
I changed my mind... The error message now includes the table name (committed 
in the trunk): Data conversion error converting "'Hello' (PARENT: ID INT NOT 
NULL)"

Regards,
Thomas

Original comment by thomas.t...@gmail.com on 18 Oct 2011 at 6:40

GoogleCodeExporter commented 9 years ago
that is awesome news, 
I actually hit this again last week and it took me way too long to accidentally 
find this bug via google again.
so THANKYOU!

Original comment by ama...@gmail.com on 18 Oct 2011 at 8:31

GoogleCodeExporter commented 9 years ago
Fixed in version 1.3.161

Original comment by thomas.t...@gmail.com on 28 Oct 2011 at 3:55