2015-08-25 23 views
0

我正在做web服务与Struts2休息插件,我能够发送正常的文本和对象作为json响应,但如果我尝试发送Hibernate实体有关系,我无法发送因为JSON响应它给误差Struts2休息与hibernate实体问题的webservice问题

No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) (through reference chain: 
org.codehaus.jackson.map.JsonMappingException["path"]->java.util.UnmodifiableList[0]->org.codehaus.jackson.map.Reference["from"]->java.util.ArrayList[0]->app.com.gmf.DTO.RestaurantMasterBean["resType"]->app.com.gmf.DTO.RestaurantTypeBean_$$_javassist_4["hibernateLazyInitializer"]) 
+0

你是如何使用Struts2的休息插件? –

回答

0

错误说明了一切:JsonMappingException

你尝试发送的bean包含其他对象,而不是预先抓取&因此,有它们的属性未初始化。当bean被编组为JSON时,这些属性失败。有多种解决方案:

  1. 取EAGER(不推荐)
  2. 仅发送您所需要的性能,并确保他们的行动返回之前获取的,否则你可能会得到一个LazyInitializationExceptionJsonMappingException包裹。作为所述的其从问题出现,即jackson正在被使用,则可以这样做:

实施例:

@JsonIgnoreProperties({"resType"}) 
public class RestaurantMasterBean{ 
private SomeOtherObject resType; 
private String name; 
private boolean shouldInform; 

// getter and setters here... 
} 
  • 简单地忽略该懒惰字段像:
  • @JsonIgnoreProperties({"hibernateLazyInitializer"})