无法将java.lang.Integer转换为java.math.BigInteger
我不熟悉hibernate和Mssql。我正在进行MySQL到Mssql的集成 我面临着一个例外: java.lang.ClassCastException:java.lang.Integer不能转换为java.math.BigInteger 我的代码是:无法将java.lang.Integer转换为java.math.BigInteger,java,hibernate,Java,Hibernate,我不熟悉hibernate和Mssql。我正在进行MySQL到Mssql的集成 我面临着一个例外: java.lang.ClassCastException:java.lang.Integer不能转换为java.math.BigInteger 我的代码是: long salesAlertsCount = ((BigInteger)HibernateUtil.getHibernateSession() .createSQLQuery("SELECT COUNT(a.id) FROM
long salesAlertsCount = ((BigInteger)HibernateUtil.getHibernateSession()
.createSQLQuery("SELECT COUNT(a.id) FROM Activity as a,Lead as l WHERE a.what_id=l.id and l.deleted=0 and "
+ (currentUser.isAdmin() ? "a.tenant_id="+currentUser.getTenant_id():" (a.owner_id="+currentUser.getId()
+ " or a.createdBy_id="+currentUser.getId()+")")
+ " and "
+ (currentUser.isAdmin()?"l.tenant_id="+currentUser.getTenant_id():" (l.owner_id="+currentUser.getId()+")")
+ " and a.deleted=0 and a.action="
+ Constants.ACTIVITY_ACTION_SEND_SALES_ALERT
+ ""
+ " and a.viewed=0 AND a.created>='"
+ beginingOfMonth
+ "' ").uniqueResult()).longValue();
这是我的代码,我以前被困在这里,这段代码在MySQL中工作,但现在当我集成到Mssql中时,它显示了这个异常
提前感谢这是因为查询返回一个整数,而您正在强制转换为BigInteger。无法将BigInteger转换为Integer,因为BigInteger的主类的类型为Number。如果可以将输出转换为Number,也可以从Number转换为biginger。请尝试使用biginger.valueOf,而不是biginger 此外,您应该更改在HQL中设置参数的方式。这可能会带来严重的安全风险,允许用户插入恶意sql查询。相反,您应该使用如下所示的hql参数
Query query = HibernateUtil.getHibernateSession().createQuery("SELECT count(a.id) FROM Activity a, Lead l where a.what_id = l.id and a.owner_id = :owner_id"); \\ Add the rest of the code
query.setParameter("owner_id", currentUser.getId());
你可以在下面阅读更多内容。摆脱演员阵容。我已经尝试了长时间的演员阵容,但它不起作用。不,这不起作用。对象的类型转换不会更改其动态类型。整数在转换为数字后仍然是整数,不能转换为BigInteger。
Query query = HibernateUtil.getHibernateSession().createQuery("SELECT count(a.id) FROM Activity a, Lead l where a.what_id = l.id and a.owner_id = :owner_id"); \\ Add the rest of the code
query.setParameter("owner_id", currentUser.getId());