您的位置:首页 > 其它

Gson与Hibernate结合使用会出现的问题

2015-12-10 16:26 246 查看
使用Hibernate来查找数据的时候,会因为延迟加载的问题,导致读取到的实体类不是一个完整的实体,如配置了多对一或多对多的映射的时候,对应的一方不会随之加载,而是在用到的时候去加载,这就导致用Gson转化实体类的时候,无法获取其属性,出现错误:

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class:
org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?
at com.google.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:67)


解决方法如下:

使用Gson的GsonBuilder构造方法,并利用注解忽略不需要的属性。

如:

<span style="font-size:18px;">@Expose

private int id;

private List books;</span>


这样Gson在转换的时候就会将books属性忽略掉,只输出id属性。

<span style="font-size:18px;">GsonBuilder builder = new GsonBuilder();

builder.excludeFiledWithoutExponseAnnotation();

Gson gson = builder.create();

String result = gson.toJson(object);</span>


但是还有一个问题没有弄清楚,就是如果确实需要关联对象的时候,这种方法就不能使用了,需要一个代理类的转换方法,暂时还不会,以后再写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: