Where子句无法正常工作:找不到类型为java.util.ArrayList的返回值的转换器

时间:2019-01-17 07:05:29

标签: jquery postgresql hibernate spring-mvc jsp

我正在使用带有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> 

如何避免该错误?

1 个答案:

答案 0 :(得分:0)

您的查询似乎没有以正确的方式编写。看来您正在使用冬眠来使用除法ID检索对象列表。尝试以这种方式编写查询:

FROM District a WHERE a.division.id =:division

ID应该是Long类型

query.setParameter("division", Long.parseLong(division));

它应该按照您想要的方式运行。