[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5659?page=c...
]
Gail Badner commented on HHH-5659:
----------------------------------
I've committed a fix to git hibernate-core 3.6 branch.
It results in a change in how types are overriden.
The "default" LOB types use streams for binding LOBs if
WrapperOptions.useStreamForLobBinding() returns true (i.e., when
hibernate.jdbc.use_streams_for_binary=true)
Type overrides are done in the following order:
1) Dialect automatically overrides the "default" LOB types with
"stream-binding" types if dialect.useInputStreamToInsertBlob() returns true.
NOTE: Currently, Dialect will override the "default" LOB types with
"stream-binding" types for all dialects except PostgreSQL. This is because
Dialect.useInputStreamToInsertBlob() currently returns true; only PostgreSQL overrides it
to return false.
2) A Dialect can override a type or restore the "default" via
addTypeOverride(BasicType typeOverride)
For example, PostgreSQLDialect overrides the current MaterializedBlobType setting with the
"lob-binding" type using:
addTypeOverride( MaterializedBlobType.INSTANCE.getAlternatives().getLobBindingType() )
For example, a dialect can restore the "default" BlobType setting using:
addTypeOverride( BlobType.INSTANCE.getAlternatives().getDefaultType() )
3) Configuration.registerTypeOverride(...) can override a type or restore the
"default"
With this fix, the value for hibernate.jdbc.use_streams_for_binary is only used for
"default" LOB types (that haven't been overriden).
Steve, is this change acceptable for 3.6.1?
Problem using Hibernate3.6.0.Final with BLOB and CLOB fields 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
Assignee: Gail Badner
Priority: Minor
Fix For: 3.6.1
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