db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kristian Waagan <Kristian.Waa...@Sun.COM>
Subject Re: Hibernate + Derby - Unable to determine stream header for hibernate type 'text'
Date Fri, 19 Jun 2009 15:47:20 GMT
kashyup wrote:
> Hello all,
> We have just started to look into Derby as our embedded DB for a desktop app
> version.
> Env: Hibernate 3.2 and Derby 10.5.1
> I have defined a java string field of type 'text' in Hibernate Mapping
> (works great on Postgres 8.1 and Oracle 10g)
> I use Hibernate SessionFactory to generate Table schema, which is done
> without any error.
> But, when I try to save records in tables via Hibernate Session, I get the
> following exception:
> Note: If I change hibernate mapping to type 'string', then I dont get this
> error:
> java.lang.IllegalStateException: No context, unable to determine which
> stream header format to generate
> 	at
> org.apache.derby.iapi.types.ClobStreamHeaderGenerator.determineMode(Unknown
> Source)
> 	at
> org.apache.derby.iapi.types.ClobStreamHeaderGenerator.expectsCharCount(Unknown
> Source)
> 	at org.apache.derby.iapi.types.ReaderToUTF8Stream.fillBuffer(Unknown
> Source)
> 	at org.apache.derby.iapi.types.ReaderToUTF8Stream.read(Unknown Source)
> 	at java.io.DataInputStream.read(Unknown Source)
> 	at org.apache.derby.iapi.types.SQLClob.readExternal(Unknown Source)
> 	at org.apache.derby.iapi.types.SQLChar.getString(Unknown Source)
> 	at org.apache.derby.iapi.types.SQLClob.getClone(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericParameter.getClone(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericParameterValueSet.<init>(Unknown
> Source)
> 	at org.apache.derby.impl.sql.GenericParameterValueSet.getClone(Unknown
> Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.addBatch(Unknown
> Source)
> 	at org.hibernate.jdbc.BatchingBatcher.addToBatch(BatchingBatcher.java:31)
> 	at
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2252)
> 	at
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2665)
> Also, I need to save it as type 'text' even though it gets saved as
> CLOB(255), as the CLOB column size can later be altered.
> What could be the cause? or changes needed?

You have discovered / triggered a bug in the new Clob handling code 
introduced in 10.5.1.
I logged DERBY-4278 [1], and have started working on a fix (the 
regression tests are running, patch needs review).

Regarding workarounds, I'm afraid all I can think of is using the client 
driver instead of the embedded driver, avoid batching for inserts with 
Clobs, change the data type, or downgrade to 10.4. Another option is to 
build Derby with the patch and test it out :)
I observe that you are using very small Clobs (255 characters). Clobs 
are in general less effective than using for instance VARCHAR.
Is your concern about altering the column size related to Derby, 
Hibernate or something else?


[1] https://issues.apache.org/jira/browse/DERBY-4278
> thanks all

View raw message