前言
最近上線了一個工具,上完之後測試驗證居然報錯,明明自測過的,哎,菜啊。。。。看下問題。主要報錯關鍵點如下
org.springframework.orm.hibernate4.HibernateQueryException: could not instantiate class
[xxx] from tuple; nested exception is org.hibernate.QueryException: could not
instantiate class [xxx] from tuple
犯罪現場
我們先看看導致報錯的代碼吧,其實很簡單的東西
String hql = "select new TempOrderInfoDTO(o.id,o.orderForm,o.type) from FoodOrderInfo o where o.id=?";
TempOrderInfoDTO tempOrderInfoDTO = orderService.findSingle(hql, new Object[] {orderId});
return tempOrderInfoDTO;
就是這麼個簡單東西,由於比較的簡單小工具,測試就沒參與了,自測了下,沒問題就上線了。卻報上面錯,原來是沒考慮到type爲空的場景。算了還是老實點吧,改下代碼
String hql = "from FoodOrderInfo o where o.id=?";
FoodOrderInfo foodOrderInfo = orderService.findSingle(hql, new Object[] {orderId});
TempOrderInfoDTO tempOrderInfoDTO = new TempOrderInfoDTO();
if (foodOrderInfo != null) {
tempOrderInfoDTO.setId(foodOrderInfo.getId());
tempOrderInfoDTO.setOrderFrom(foodOrderInfo.getOrderFrom());
tempOrderInfoDTO.setType(foodOrderInfo.getType());
}
return tempOrderInfoDTO;
哎,菜是原罪。