Bonjour,
je travaille sur une base 4d et pour une question de perf, je dois passer par une procédure stockée qui me renvoi un resulset. J'ai testé en JDBC, mon resulset est correctement récupéré, mais avec Hibernate j'y arrive pas.
Cela ne fait pas longtemps que je bosse avec hibernate, donc je ne sais pas d'ou vient le probleme...
Voici pour le mapping :
et pour le code je fais uniquement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.orkis.ajaris.hibernate"> <class name="Document"> <id name="ref" type="string" /> <property name="titre" type="string" not-null="true"/> <property name="blob" type="blob" not-null="true"/> <loader query-ref="test"/> </class> <sql-query name="test" callable="true"> <return alias="Doc" class="Document"> <return-property name="ref" column="spRef"/> <return-property name="titre" column="spTitre"/> <return-property name="blob" column="spBlob"/> </return> { ? = call spTest(?, ?, ?) } </sql-query> </hibernate-mapping>
Voila l'exception récupérée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Transaction tx = session.beginTransaction(); List docs = session.getNamedQuery("test") .setInteger(1,1) .setInteger(2,12) .setString(3,"neige") .list(); Iterator it = docs.iterator(); while(it.hasNext()){ Document d =(Document)it.next(); System.out.println(d.getTitre()+" taille du blob : "+ d.getBlob().length()+ " ref : "+d.getRef()); } tx.commit();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at java.util.ArrayList.toArray(Unknown Source) at org.hibernate.util.ArrayHelper.toTypeArray(ArrayHelper.java:75) at org.hibernate.impl.AbstractQueryImpl.typeArray(AbstractQueryImpl.java:627) at org.hibernate.impl.AbstractQueryImpl.getQueryParameters(AbstractQueryImpl.java:635) at org.hibernate.impl.SQLQueryImpl.getQueryParameters(SQLQueryImpl.java:161) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153) at HibernateTest.main(HibernateTest.java:24)
RQ : at HibernateTest.main(HibernateTest.java:24) correspond à l'appel à la fonction list()
Je suppose que l'erreur doit être dans le mapping, mais j'ai essayé de suivre la doc http://www.hibernate.org/hib_docs/v3/reference/en/html/querysql.html
17.3.2. Using stored procedures for querying, et je ne vois pas trop la différence avec ce que j'ai fait...
bref j'en sais riendonc si quelqu'un se sent de me guider...
Merci d'avance
Partager