繁体   English   中英

在Hibernate中运行Projection count查询时发生Classcast异常

[英]Classcast Exception while running Projection count query in hibernate

我正在使用hibernate 4.3.1的最终版本。 在休眠映射文件中,我已将该属性定义为整数。 例如: <property name= "jobNo" type="integer">

使用的数据库是DB2。 其中jobNo列定义为Integer 当尝试使用Projection API检索jobNo的计数时:

criteria.setProjection(Projections.count(jobNo));
criteria.uniqueResult();

它返回为Long 理想情况下,应将其返回为Integer

我是新手,有人可以帮助我吗?

它返回为Long。 理想情况下,应将其返回为Integer。

你没有手。 它由您的JPA实现处理(在此处休眠)。

如果您知道count返回的值不能超过Integer最大值(2147483647),则应该没有问题。 您可以将Long转换为Integer。 如果有疑问,可以检查Long值不超过Integer最大值。
无论如何,我建议您将其强制转换为Number而不是Long ,如果更改JPA实现,可能会避免意外。

int jobNo = ((Number)criteria.uniqueResult()).intValue();

org.hibernate.criterion.Projections.count(String propertyName)总是返回Long值,就像HQL返回的一样。 在映射中使用Long类型。 如果您不想更改映射类型,则可以使用Result TransformerHibernate 4.1 Count Projection Type Mismatch(Long / Integer)处给出另一种解决方案。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM