[Hibernate]Erreur sur LongType.next(LongType.java:54)
Bonjour à tous,
j'ai un problème avec Hibernate qui me donne la trace suivante :
Code:
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) |
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.
Voici la requête SQL qui est appelée lorsque l'exception est levée (sur une base de données Oracle) :
Code:
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(); |
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.
Est-ce que quelqu'un aurait une idée ?
:help:
A plus