我有以下代码
StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("pkg_p.proc_p");
storedProcedure.getResultList();
存储的proc返回与以下查询等效的ref游标
select 1 as id_col, 'My Name ' as name , 1000 as sal from dual;
我有一个pojo类MyTable,它等同于查询的结果集返回类型
public class MyTable {
private Long idCol;
private String name;
private Long sal;
/// setter and getters omitted for brevity
}
for(Object[]row: resultSet)
{
MyTable mt = new MyTable ();
mt.setIdCol((Long)row[0]); ///throw class cast exception
}
如何解决以下错误
请求处理失败;嵌套异常为 java.lang.ClassCastException:无法将java.math.BigDecimal强制转换为 java.lang.Long
即使row [0]具有像1,2,10,687等的Long值,
答案 0 :(得分:2)
您不能将Big Decimal转换为Long,无论如何使用
可以从中获取Long值。<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container2">
<div class="containerr">
<div class="pic" id="content">
<div id="container">
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="10">
<p name="values"></p>
</div>
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="11">
<p name="values"></p>
</div>
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="12">
<p name="values"></p>
</div>
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="13">
<p name="values"></p>
</div>
</div>
</div>
</div>
</div>
<div class="box002" draggable="true" ondragstart="drag(event)" id="2">
<img src="" draggable="true" id="slide" border="rounded" />
</div>
如果不起作用,则将行强制转换为大十进制,然后
row[0].longValue()
所以您的代码看起来像这样
(BigDecimal) row[0].longValue()
或尝试将循环更改为
mt.setIdCol((BigDecimal)row[0].longValue());
如果您不想使用投射
阅读您的评论后。
for(BigDecimal[] row : resultSet)