Struts2的JSON插件无法与“懒”的数据工作
-
22-07-2019 - |
题
我有一个实体与一个OneToOne关系即取出懒惰地:
@Entity
public class Person {
@Id
private Integer id;
@Column(length=60)
private String address;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="idProvince")
private Province province;
}
这是在测试我做的,试图让所有的实体和他们序列化为JSON,使用的 JSONPlugin ( '官方' JSON插件的Struts 2):
List<Person> people = personService.findAll();
String result = JSONUtil.serialize(people);
System.out.println(result);
和这是例外,我得到(相同的异常时,我使用这个插件与Struts2的行动和@JSON注释):
com.googlecode.jsonplugin.JSONException: java.lang.IllegalAccessException:
Class com.googlecode.jsonplugin.JSONWriter can not access a member of class
org.postgresql.jdbc4.AbstractJdbc4Statement with modifiers "public"
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:237)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:159)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:125)
at com.googlecode.jsonplugin.JSONWriter.array(JSONWriter.java:407)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:149)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:125)
at com.googlecode.jsonplugin.JSONWriter.write(JSONWriter.java:93)
at com.googlecode.jsonplugin.JSONWriter.write(JSONWriter.java:76)
at com.googlecode.jsonplugin.JSONUtil.serialize(JSONUtil.java:62)
...
我使用Hibernate和当我改变取= FetchType.EAGER上述相同的代码工作。 我认为迟缓装载生成代理对象,这使得它失败。
我的问题是:是否可以序列化包含延迟加载属性的对象
?解决方案
我有同样的问题,而使用JSON-lib和它确实是因为对象是一个代理。
我发现谷歌,GSON 处理的Hibernate对象的序列化更好,但当然,它有它自己的怪癖,所以你的里程可能会有所不同。
其他提示
从Hibernate拆下实体&然后序列化。
不隶属于 StackOverflow