[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5659?page=c...
]
Gail Badner commented on HHH-5659:
----------------------------------
I've been testing with Oracle 10g and I can confirm that
hibernate.jdbc.use_streams_for_binary=true fixes MaterializedBlob and MaterializedClob.
Reading/writing (Java) Blob/Clob properties is broken though, regardless of the how
hibernate.jdbc.use_streams_for_binary is set.
With hibernate.jdbc.use_streams_for_binary=false, you get:
java.lang.ClassCastException: $Proxy3 cannot be cast to oracle.sql.BLOB
With hibernate.jdbc.use_streams_for_binary=true, you get:
org.hibernate.HibernateException: Unknown unwrap conversion requested:
java.sql.Blob to org.hibernate.type.descriptor.BinaryStream
Would it break anything to change java.BlobTypeDescriptor.unwrap( value,
BinaryStream.class, options ) to return a BinaryStream instead of throwing an exception?
Also, change java.ClobTypeDescriptor.unwrap( value, CharacterStream.class, options ) to
return a CharacterStream?
As far is the difficulty with setting hibernate.jdbc.use_streams_for_binary in the proper
context and to get around the "globalness", would it be acceptable to change how
WrapperOptions.useStreamForLobBinding() is defined in AbstractStandardBasicType to take
the dialect into account?
For example, it could check if hibernate.jdbc.use_streams_for_binary was explicitly set to
"true" or "false"; if it was not explicitely set, then call
session.getFactory().getDialect().useInputStreamToInsertBlob() to determine if streams
should be used for binding LOBs.
For Oracle, it should return true; for Postgresql, it should return false.
Steve, what do you think?
Problem using Hibernate3.6.0.Final with CLOB field in Oracle.
-------------------------------------------------------------
Key: HHH-5659
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5659
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.6.0
Environment: Hibernate 3.6.0.Final, Database Oracle10G on Linux X64, and JPA
Reporter: Samuel Rettore
Priority: Minor
Attachments: createClob_Deprecated.png, Hibernate_createClob_Deprecated.png,
LobHelper_Interface.png, Srhlog.java
When migrating my project that works well with Hibernate 3.5.6 End-to 3.6.0.Final the
Clob field displays the following error
|java.lang.ClassCastException: $Proxy1119 cannot be cast to oracle.sql.CLOB
at
oracle.jdbc.driver.OraclePreparedStatement.setClob(OraclePreparedStatement.java:7021)
at
org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doBind(ClobTypeDescriptor.java:60)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:89)
at
org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:282)
at
org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:277)
at
org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:85)
at
org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2166)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2412)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2856)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at
org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:795)
at
com.sun.enterprise.container.common.impl.EntityManagerWrapper.flush(EntityManagerWrapper.java:407)
---
This error appears only with CLOB field.
to get more information at their disposal.
Thanks
Rettore.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira