我正在使用Hibernate5.4.18.final。我有一个有效的@实体 Appointment
哪个有财产 status
这是我自定义类型的枚举 AppointmentStatus
使用 @Enumerated( EnumType.STRING )
. 我还有一把有方法的刀 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 Criteria buildCriteria( Class clazz, List 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;
}
所以,这样做的全部目的是我可以选择(在这个例子中-计数)所有具有 `AppointmentStatus` 传入的状态 `filter.getValue()` 这是一个 `List<Enum>` . 但我得到的不是预期的结果,而是一个例外: `class java.util.ArrayList cannot be cast to class java.lang.Enum` 什么时候发生 `criteria.uniqueResult()` 被称为。
我做错什么了?提前谢谢。
1条答案
按热度按时间iecba09b1#
我解决了。刚刚将列表转换为数组。