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

来源:互联网 发布:数据交换技术 编辑:程序博客网 时间:2024/04/30 10:40

使用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;">@Exposeprivate 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>

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


0 0
原创粉丝点击