ResponseBody作为对象列表 - 500(内部服务器错误)

时间:2015-03-04 14:47:24

标签: ajax json

我正在尝试从ajax请求获取对象列表并获取内部服务器错误。它在早上工作,但现在却没有。 Ajax请求:

$.ajax({
    type : 'get',
    url : 'http://localhost:8080/FootballManager/draft/' + leaguename
            + '/players',
    dataType : "json",
    data : {
        "leaguename" : leaguename
    },
    contentType : "application/json",
    cache : false,
    success : function(data) {
         drawTable(data);   
    },
    error : function(XmlHttpRequest, textStatus, errorThrown) {
        alert("error= " + errorThrown);
    }
});

Spring mvc控制器:

    @RequestMapping(value = "{leaguename}/players", method = RequestMethod.GET,headers = "Accept=application/json")
public @ResponseBody
List<Players> getPlayers(@RequestParam("leaguename") String leaguename,HttpSession session) {
    try {
        //list of players
        return players;
    } catch (Exception e) {
        LOG.log(Level.SEVERE, "Exception: ", e);
        return null;
    }
}

UPD。这很奇怪,但是它可以与其他对象列表一起使用,也很奇怪,如果我手动创建所有对象(比如新的Player())并使用setter设置相同的字段并在列表中添加所有对象,它就可以工作,但是如果我通过hibernate从DB获取此对象,我收到此错误

2 个答案:

答案 0 :(得分:1)

渴望不是解决方案。它的解决方法有缺点。您的问题是,我认为您的集合未加载,并且在您的事务之外您(或您的序列化程序)无法访问db。其中一个解决方案是使用DTO将数据传输到客户端并读取其中的数据。它听起来也像是一种解决方法,但在实践中,您通常会在客户端使用专门的和受限制的视图。

答案 1 :(得分:0)

问题解决了。将fetchType更改为Eager解决了此问题