Hi I'm using Hibernate 3.2 with a 1.6 JDK and Mysql 5.0 I'm trying to use the criteria api to put together a dynamic filter. However when I add a Restriction on a Set of Enums that is a property of my Criteria object I get a org.hibernate.exception.GenericJDBCException.
my code is like this:
public class FollowUp {
...
public Set<AdminCategory> getAdminCategories() {...}
public void setAdminCategories(Set<AdminCategory> _arg) { ... }
}
My hibernate mapping file has a set of Enum values as specified in the hibernate documentation: http://docs.jboss.org/hibernate/stable/core/reference/en/html/collections.html#collections-ofvalues. The file (FollowUp.hbm.xml ) is like this
<hibernate-mapping>
<typedef class="dao.util.HibernateAdminCategoryType" name="main-category" />
<class name="FollowUp" table="follow_up">
<!-- other properties here -->
<set name="mainCategories" table="follow_up_main_categories" fetch="join" lazy="false">
<key column="fup_id"/>
<element column="identifier" type="main-category"/>
</set>
<!-- other stuff -->
</class>
</hibernate-mapping>
the criteria filter code is like this:
public void runFilter(FollowUpFilter _filter) {
Criteria criteria = this.getSession().createCriteria(FollowUp.class);
if (_filter.hasMainCategories()) {
criteria.add(Restrictions.in("mainCategories", _filter.getMainCategories()));
}
criteria.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY );
criteria.setProjection(Projections.rowCount());
Integer count = (Integer) criteria.uniqueResult();
_filter.setTotalSize(count);
}
When I run my tests (with sql output) I get the following error:
Statement parameter 1 not set.
org.hibernate.exception.GenericJDBCException: could not execute query
the sql output is as follows:
select
count(*) as y0_
from
follow_up this_
where
this_.id in (
?
)
Does anyone know the correct way to filter on a set of enum values in a Criteria (in Hibernate 3.2)?
Cheers Simon