Restrictions.in的Hibernate计数以及枚举对象列表



我使用的是Hibernate 5.4.18.Final。我有一个有效的@EntityAppointment,它的属性status是我的自定义类型AppointmentStatus的枚举,它使用@Enumerated( EnumType.STRING )映射。我还有一个DAO,它有一个方法count(),通过给定的Criteria来计数行,如下所示:

@Override
public <T> Long countRows( Class<T> clazz, List<FilterElement> filter ) {
Criteria criteria = buildCriteria( clazz, filter );
criteria.setProjection( Projections.rowCount() );
return (long) criteria.uniqueResult();
}

buildCriteria()方法如下:

@Override
private <T> Criteria buildCriteria( Class<T> clazz, List<FilterElement> filter ) {
Criteria criteria = sessionFactory.getCurrentSession().createCriteria( clazz );
for ( FilterElement element : filter ) {

//taking care of different types of operations
//...
//if IN operation is required
if ( element.getOperation() == FilterElement.FilterOperations.IN && element.getValue() instanceof List ) {
criteria.add( Restrictions.in( element.getProperty(), element.getValue() ) );
}
}
return criteria;
}

因此,这样做的全部目的是,我可以选择(在本例中,计数(在filter.getValue()(即List<Enum>(中传递的具有任何AppointmentStatus状态的所有记录。但我得到的不是预期的结果:当调用CCD_ 12时发生的CCD_。

我做错了什么?提前谢谢。

我解决了它。刚刚将List转换为Array。

最新更新