Bonjour tout le monde, j'ai lu qu'on peut utiliser Hibernate en 3 mode : POJO qui est par defaut et DOM4J et Dynamic-map, j'ai opté pour le DOM4J j'ai fais un test et ca marcher. Mon problème apparaît qd j'essaye d’appeler une procédure stockée je recoi l'exception suivante :
Caused by: java.sql.SQLException: Nom de colonne non valide at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269) at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:6218) at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1557) at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1543) at org.hibernate.type.StringType.get(StringType.java:16) at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:77) at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:68) at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:691) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:280) at org.hibernate.loader.Loader.doQuery(Loader.java:387) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206) at org.hibernate.loader.Loader.doList(Loader.java:1515) ... 7 more
voici le mapping que j'ai réalisé : <class entity-name="InfoCompte">
<id name="id" type="java.lang.String" column="ROWNUM" node="@id"> <generator class="native" /> </id> <property name="cptGeneral" column="CPT_GEN" type="string"/> <property name="dateSolde" column="DATE_SOLDE" type="string"/> <property name="mntSolde" column="MNT_SOLDE" type="string"/> <property name="cfCompte" column="CF_COMPTE" type="string"/> <property name="annexe" column="ANNEXE" type="string"/> <property name="codeErreur" column="CODE_ERREUR" type="string"/> <property name="racineCompte" column="RACINE_COMPTE" type="string"/> </class>
et voici celui de l'appel de la procédure : <sql-query name="ProcedureInfoCompteOut" callable="true" cacheable="false"> <return alias="InfoCompte" lock-mode="read" entity-name="InfoCompte"> <return-property name="cptGeneral" column="CPT_GEN" /> <return-property name="dateSolde" column="DATE_SOLDE" /> <return-property name="mntSolde" column="MNT_SOLDE" /> <return-property name="cfCompte" column="CF_COMPTE" /> <return-property name="annexe" column="ANNEXE" /> <return-property name="codeErreur" column="CODE_ERREUR" /> <return-property name="racineCompte" column="RACINE_COMPTE" /> </return> { ? = call FCT_EBAN_INFO_COMPTE(:rib) } </sql-query> coté JAVA je fais comme suite : Query myQuery = session.getNamedQuery(procedure); myQuery.setString(key, value); Element out = (Element) myQuery.uniqueResult();
alors que si j'utilise le même mapping avec une table, ca passe sans aucun problème. et bien sur lors de la création du session je fais getSession(EntityMode.DOM4J);
SVP qui peut m'aidé car je suis bloqué, j'ai cherché partout sans aucun résultat, tous ce que je trouve c'est un exemple avec un mapping avec une table.
|