我正在使用带有postgres数据库和休眠ORM的spring mvc框架。
我遇到了这个错误:
嵌套的异常是java.lang.IllegalArgumentException:没有转换器 找到具有根类型的返回值:class java.util.ArrayList]类型 原因java.lang.IllegalArgumentException:找不到用于的转换器 类型的返回值:类java.util.ArrayList
这是我的控制器:
@ResponseBody
@RequestMapping("/ajaxmethod/getdistrict")
public List<District> getDistrict(HttpServletRequest request){
System.out.println("request:" + request.toString());
String division = request.getParameter("division");
System.out.println("division::::::::::::::::::::::::::::::::::::::::::" + division );
List<District> districtlist = this.upazillaService.listDistricts(division);
return districtlist;
}
这是我的DAO:
@SuppressWarnings("unchecked")
@Override
public List<District> listdistricts(String division) {
Session session = this.sessionFactory.getCurrentSession();
Query query = session.createQuery("from District where division_id=:division");
query.setParameter("division", Integer.parseInt(division));
System.out.println( " query::::::::::::::::::::::: " + query.toString());
List<District> districtList = query.list();
for (District p : districtList) {
logger.info("district List::" + p);
}
// session.clear();
return districtList;
}
这是我的模型:
@ManyToOne
@JoinColumn(name = "division_id", referencedColumnName = "id")
private Division division;
这是jquery:
<script type='text/javascript'>
$( document ).ready(function() {
$("#district").prop("disabled", true);
$("#division").change(function () {
var division =jQuery("#division option:selected").val();
console.log(division);
$("#district").prop("disabled", false);
$.ajax({
type: "POST",
url: "/farmvill/ajaxmethod/getdistrict",
data: {division: division},
success: function (data) {
console.log("success");
},
error: function (e) {
console.log(e);
}
});
});
});
</script>
如何避免该错误?
答案 0 :(得分:0)
您的查询似乎没有以正确的方式编写。看来您正在使用冬眠来使用除法ID检索对象列表。尝试以这种方式编写查询:
FROM District a WHERE a.division.id =:division
ID应该是Long类型
query.setParameter("division", Long.parseLong(division));
它应该按照您想要的方式运行。