[hibernate-issues] [Hibernate-JIRA] Created: (HHH-7035) Wrong NClob cast to Blob

stephan (JIRA) noreply at atlassian.com
Wed Feb 8 07:53:12 EST 2012


Wrong NClob cast to Blob
------------------------

                 Key: HHH-7035
                 URL: https://hibernate.onjira.com/browse/HHH-7035
             Project: Hibernate ORM
          Issue Type: Bug
          Components: entity-manager
    Affects Versions: 3.6.8
         Environment: jpa 2
jdk 6
ojdbc6-11.2.0.2.0
            Reporter: stephan


I read an entity from an Oracle 10gR2 database and the I try to write it to a Postgresql 8.3.14 dataabse.

Here the entity :

public class MyEntity {
   @javax.persistence.Lob
   java.sql.NClob prop;

   public void setProp(java.sql.NClob c) {
       prop=c;
   }

   public java.sql.NClob getProp() {
       return prop;
   }
}

When it's time to flush it to database, I get this exception :

java.lang.ClassCastException: oracle.sql.NCLOB cannot be cast to java.sql.Blob 
 at org.hibernate.type.BlobType.getReplacement(BlobType.java:37) 
 at org.hibernate.type.AbstractStandardBasicType.replace(AbstractStandardBasicType.java:359) 
 at org.hibernate.type.TypeHelper.replace(TypeHelper.java:212) 
 at org.hibernate.event.def.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:600) 
 at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:337) 
 at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303) 
 at org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:464) 
 at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:255) 
 at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84) 
 at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867) 
 at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851) 
 at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855) 
 at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:851)

Hibernate should try to cast to a java.sql.Clob because oracle.sql.NClob implements java.sql.Clob

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list