为了定义标准,我使用下面的代码
Conjunction c1 = Restrictions.conjunction();
c1.add(Restrictions.eq("owner", 123));
c1.add(Restrictions.eq("shared", 'N'));
c1.add(Restrictions.eq("cId", 20));
Conjunction c2 = Restrictions.conjunction();
c2.add(Restrictions.eq("shared", 'Y'));
c2.add(Restrictions.eq("cId", 20));
criteria.add(Restrictions.or(c1, c2));
然后,我想获取此条件的唯一结果。
CriteriaImpl criteriaImpl = (CriteriaImpl) criteria;
Projection originalProjection = criteriaImpl.getProjection();
ResultTransformer originalResultTransformer = criteriaImpl.getResultTransformer();
Object rowCount = criteria.setProjection(Projections.rowCount()).uniqueResult();
int rc = (Integer) rowCount;
但是,代码在criteria.setProjection(Projections.rowCount()).uniqueResult()
失败,并在服务器日志上打印错误,如下所示:
信息:在事务完成时强制清理batcher资源;忘了关闭ScrollableResults / Iterator?
出现的例外是:
java.lang.ClassCastException:java.lang.Character无法强制转换为java.lang.String
知道我哪里错了吗?
答案 0 :(得分:3)
可能是这个
c1.add(Restrictions.eq("shared", 'N'));
在您使用它的两个地方尝试使用此功能("
代替'
)
c1.add(Restrictions.eq("shared", "N"));