Tak til non sequitor for al hjælpen. Jeg har denne funktion, og jeg vil lægge alle brikkerne her til fremtidig reference. Uanset alle påstandene om at opgradere driverne og alt ville virke, virkede intet af det for mig. I sidste ende var jeg nødt til at implementere en 'org.hibernate.usertype.UserType', jeg kaldte den det samme som alle eksemplerne på nettet StringClobType. Med undtagelse af nogle importer brugte jeg eksemplet fra Using Clobs/Blobs med Oracle og Hibernate. Så vidt jeg er bekymret ignorere "pas på" påstanden.
Der var én ændring, jeg skulle lave for at få fusioner til at fungere. Nogle af metoderne blev ikke implementeret i den medfølgende kodeeksempel. Eclipse fiksede det for mig ved at stikke dem ud. Fedt, men udskiftningsmetoden skal faktisk implementeres, ellers vil alle fusioner overskrive dataene med en null. Her er min implementering:
offentlig Object replace(Object newValue, Object existentValue, Object arg2)throws HibernateException { return newValue;}
Jeg vil ikke duplikere klasseimplementeringen her, gå til ovenstående link for at se det. Jeg brugte koden i den tredje grå boks. Så øverst i pojo-klassen, jeg ville bruge det i, tilføjede jeg følgende efter importen
... import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDefs; import org.hibernate.annotations.TypeDef; @TypeDefs({ @TypeDef( name="clob", typeClass =foo.StringClobType.class ) }) @Entity @Table(name="EA_COMMENTS") public class Kommentar udvider SWDataObject implementerer JSONString, Serializable { ... }
For at bruge den nye brugertype tilføjede jeg annoteringen til min getter:
@Type(type="clob")@Column(name="COMMENT_DOC")public String getDocument(){ return get("Document");}
Jeg havde ikke brug for @Lob-annotationen.
I min persistence.xml endte persistence-unit-erklæringen med at se sådan ud:
org.hibernate.ejb.HibernatePersistence
SetBigStringTryClob virkede aldrig for mig og var ikke nødvendig for denne endelige implementering.
Min lektie er i sidste ende, at det nok er bedre at være med og så kæmpe. Det ville have sparet mig for tre dage.