我正在尝试通过hibernate连接到sql server 2012。
sql查询:SELECT top 3 P. ,v。 FROM TBLPOMASTER P在v.vendorid = p.VendorId上加入tblVendorMaster v,其中v.VendorCode = 10001和p .ApprovedStatus = 'Y'
我尝试将HQL查询翻译为
List<TblPomaster> poMasterList = new ArrayList<TblPomaster>();
String sqlQuery = "from TblVendorMaster as v, TblPomaster as p where v.vendorId=p.vendorId and v.vendorCode=:vendorLoginId and p.approvedStatus='Y'";
Query query = HibernateUtil.getSession().createQuery(sqlQuery)
.setParameter("vendorLoginId", vendorLoginId);
query.setMaxResults(3);
poMasterList=query.list();
return poMasterList;
在上面的代码查询中执行正常。但是query.list()抛出RuntimeException为 java.lang.String无法强制转换为java.lang.Long
上述错误的解决方案是什么
答案 0 :(得分:1)
您可以将属性的类型从String
更改为Long
您可以将值强制转换为long:
Long.valueOf(String s).longValue();
还建议您使用以下命令获取查询结果:
query.getResultList();
答案 1 :(得分:0)
看起来你正在从数据库中检索一个值,而hibernate正试图将其转换为Long值。
也许您已将此表列映射到模型类中的错误类型属性。我要检查哪些文字值是定义为&#39;数字&#39;在你班上。
- @theMarceloR:vendorCode数据类型在模型文件中为Long。但我发送vendorLoginId是一个字符串值。这是问题吗?
将模型配置中的属性从Long更改为String,看看会发生什么。
<强>解:强> Sagar更新了他的代码,现在他将vendorCode作为参数发送,该值从字符串转换为long。