Bonjour à tous,
j'ai un problème avec Hibernate qui me donne la trace suivante :
La plupart du temps, la méthode findCompteurById se termine correctement et que pour certains paramètres (toujours les mêmes) une exception est levé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 CAUSE: java.lang.NullPointerException java.lang.NullPointerException at org.hibernate.type.LongType.next(LongType.java:54) at org.hibernate.engine.Versioning.increment(Versioning.java:25) at org.hibernate.event.def.DefaultFlushEntityEventListener.getNextVersion(DefaultFlushEntityEventListener.java:262) at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java(Compiled Code)) at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java(Compiled Code)) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:70) at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:39) at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:711) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1409) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153) at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:603) at ch.gma.contrat.offre.persistence.dao.OffreHibernateDao.findCompteurById(OffreHibernateDao.java:942)
Voici la requête SQL qui est appelée lorsque l'exception est levée (sur une base de données Oracle) :
Ce que je ne comprends pas c'est que la même requête passe toujours, même avec les arguments qui lèvent une exception, lorsque je fais une requête interactive avec Toad sur la base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 StringBuffer select = new StringBuffer("SELECT SUM(NBCOMPTEURREEL) AS CPTREEL "); select.append("FROM DISTRIBUTION "); select.append("WHERE IDR = " + idR.toString() + " "); select.append("AND IDSECT = " + idSect.toString() + " "); select.append("AND (FIN IS NULL OR "); select.append(" EXTRACT(YEAR FROM DTDIGRFIN) = " + today.get(Calendar.YEAR) + ")"); Long result = (Long) getSession().createSQLQuery(select.toString()).addScalar("CPTREEL", Hibernate.LONG).uniqueResult();
Est-ce que quelqu'un aurait une idée ?
A plus
Partager