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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Julyraining/article/details/50251279

使用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>

但是还有一个问题没有弄清楚,就是如果确实需要关联对象的时候,这种方法就不能使用了,需要一个代理类的转换方法,暂时还不会,以后再写。


展开阅读全文

没有更多推荐了,返回首页