« Return to Thread: Hibernate + Derby - Unable to determine stream header for hibernate type 'text'

Re: Hibernate + Derby - Unable to determine stream header for hibernate type 'text'

by kashyup :: Rate this Message:

Reply to Author | View in Thread

Hi Kristian,
Looking at the jira: https://issues.apache.org/jira/browse/DERBY-4278
seems like you have fixed the issue.

Previously I downloaded Derby 10.5.1.1

What would be the best way to get this fix? Should I do a check out from the Development Trunk?

thanks

Kashyup



Kristian Waagan-4 wrote:
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?
>  
Hello,

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?


Regards,
--
Kristian

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

 « Return to Thread: Hibernate + Derby - Unable to determine stream header for hibernate type 'text'