Stripes JsonResolution导致Hibernate上的stackoverflower错误多对一映射

时间:2012-07-06 00:08:23

标签: java json stripes

我已经在网上尝试解决这个问题一段时间了。

我有一个对象,它已成功映射(包括JsonResolution) 但是当我使用多对一映射来获得不同的关系时,JsonResolution会导致堆栈溢出错误,我认为它会陷入该关系的循环中。我试过延迟加载,Hibernate.Initialize e.t.c并没有运气,我认为需要在JsonResolution端或映射上纠正一些事情。

<set name="Audits" table="audits" inverse="true" lazy="false" fetch="select">
            <key>
                <column name="entityId" not-null="true" />
            </key>
            <one-to-many class="Audit" />
        </set>

<many-to-one name="person" class="Person" column="personId" not-null="false" unique="true" />

代码:

@HandlesEvent("getall")
    public Resolution getall() {
        if(!User.isLoggedInUserAdmin()) { return null; }
        EventDTO eDTO = new EventDTO();
        Session s = DBUtil.GetHibernateSession();
        List<Event> events = s.createCriteria(Event.class)
                .setMaxResults(2)
                .add(Restrictions.eq("type", "Accident"))
                .addOrder(Order.desc("id"))
                .list();
        if(events.isEmpty()) { 
            eDTO.setStatus("success");
        } else {
            for(int i=0; i< events.size(); i++) {
                Hibernate.initialize(events.get(i).getPerson());
            }
            eDTO.setEntities(events);
            eDTO.setStatus("success");
        }
        JsonResolution j = (JsonResolution) new JsonResolution(eDTO);
        s.close();
        return j;
    }

错误:

net.sourceforge.stripes.exception.StripesServletException: ActionBean execution threw an exception.
    net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:183)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)
root cause

java.lang.StackOverflowError
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:601)
    org.json.JSONObject.populateMap(JSONObject.java:937)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONArray.<init>(JSONArray.java:171)
    org.json.JSONObject.wrap(JSONObject.java:1524)
    org.json.JSONObject.populateMap(JSONObject.java:939)
    org.json.JSONObject.<init>(JSONObject.java:272)
    org.json.JSONObject.wrap(JSONObject.java:1539)
    org.json.JSONObject.populateMap(JSONObject.java:939)

1 个答案:

答案 0 :(得分:1)

可能序列化无法处理循环引用(事件 - &gt; Person&amp; Person-&gt;事件)。 尝试使用您自己的序列化实现(我不知道您是否可以插入自己的序列化程序)或使用其他库(可能是Gson?)进行序列化。