J'utilise Hibernate 3 et Oracle 9 pour une entité dont un des champs String est trop long pour rentrer dans un VARCHAR, donc j'utilise un CLOB.
Voici le mapping Hibernate correspondant:
Comme j'utilise le ClobStringType de Spring, ma sessionFactory Spring est définie comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <hibernate-mapping> <class name="com.mycompany.myapp.common.vo.ActionLog" table="ACTN_LOG"> <!--...--> <property name="additionalInformation" type="org.springframework.orm.hibernate3.support.ClobStringType"> <column name="ADTNL_INFO_TXT" /> </property> <!--...--> </class> </hibernate-mapping>
Le mapping se fait correctement mais quand j'essaie d'exécuter la requête HQL suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <beans> <!--...--> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"/> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--...--> <property name="lobHandler"><ref local="lobHandler"/> </property> <!--...--> </bean> <!--...--> </beans>
J'obtiens le message d'erreur suivant, assez mystérieux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select distinct actionlog from ActionLog actionlog left outer join fetch actionlog.parentActionLog actionlogactionlog left outer join fetch actionlog.action actionlogaction left outer join fetch actionlog.state actionlogstate left outer join fetch actionlog.stateCause actionlogstatecause;
J'ai cherché cette erreur sur Google et j'ai trouvé pas mal d'occurrences mais aussi beaucoup de tatonnements (version d'oracle, mode batch, "tourne toi vers la fenêtre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Caused by: java.sql.SQLException: ORA-00932: inconsistent datatypes: expected - got CLOB at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
Est-ce que quelqu'un aurait une idée d'où peut venir le problème?
Partager