在hibernate中计算唯一结果时出错

时间:2015-03-02 09:35:53

标签: java hibernate

为了定义标准,我使用下面的代码

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

知道我哪里错了吗?

1 个答案:

答案 0 :(得分:3)

可能是这个

c1.add(Restrictions.eq("shared", 'N'));

在您使用它的两个地方尝试使用此功能("代替'

c1.add(Restrictions.eq("shared", "N"));