我一直在网上尝试修复此问题已有一段时间。
我有一个对象,该对象已通过使用成功映射(包括JsonResolution)
但是,当我对不同的关系使用多对一映射时,JsonResolution会引起堆栈溢出错误,我认为它陷入了该关系的循环中。我尝试了延迟加载Hibernate.init.ize 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)
最佳答案
可能序列化无法应付循环引用(事件->人员和人员->事件)。
尝试使用自己的序列化实现(我不知道是否可以插入自己的序列化器)或使用另一个库(也许是Gson?)进行序列化。