QueryDsl-JPA SUM в поле Integer - значение параметра не соответствует ожидаемому типу
У меня возникла непредвиденная проблема при выполнении запроса с использованием QueryDsl/Hibernate (2.8.2).
Мое поле генерируется так, как вы можете видеть, это целое число.
public final NumberPath nbPotatoes= createNumber("nbPotatoes", Integer.class);
Я пытаюсь добавить предложение "Имея" к моей просьбе, как это:
res.having( (QGarden.garden.nbPotatoes.sum()).gt(0) );
Я выполняю сумму в поле nbPotatoes и выбираю только те строки, у которых сумма больше нуля.
Когда запрос выполняется, я получаю следующее исключение:
Caused by: java.lang.IllegalArgumentException: Parameter value [0] did not match expected type [java.lang.Long]
at org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:375)
at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:348)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:375)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:442)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:72)
at com.mysema.query.jpa.impl.JPAUtil.setConstants(JPAUtil.java:44)
at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:135)
at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:103)
at com.mysema.query.jpa.impl.AbstractJPAQuery.list(AbstractJPAQuery.java:271)
Поэтому я попытался преобразовать свой параметр в Long, но он не сработал, и я получаю то же исключение. Единственным способом, который я нашел, было изменение типа поля на Long вместо Integer, но я не очень доволен этим решением...
Любая идея, где ошибка может быть, или я делаю что-то не так?
Спасибо!
edit 1: К сожалению, он все еще не работает с QueryDsl 3.2.0. Я отладил некоторые части кода, и кажется, что Hibernate делает что-то не так. Моим значением параметра, очевидно, является целое число (я изменил значение на 748, чтобы убедиться, что получаю правильный параметр). Но после вызова метода "getNamedParameterExpectedType" определенный тип оценивается как Long?! Затем, когда Hibernate проверяет привязку параметра, он вызывает соответствующее исключение, как и ожидал тип Long.
http://www.images-host.fr/view.php?img=14062708bug-hibernate.png
Никто не сталкивался с этой проблемой и не решил ее?