您的位置:首页 > 理论基础 > 计算机网络

hibernate controller层返回前端json转化失败 org.springframework.http.converter.HttpMessage

2018-02-05 14:25 661 查看
错误:

2018-02-05 14:22:17.567  WARN 520 --- [nio-7900-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.dynamic.cloud.entity.User_$$_jvste64_0["handler"])


使用的是springBoot的jpa , 在操作实体的时候发生错误

public User findById(@PathVariable Long id) {
// User one = this.userRepository.getOne(id); // 这个需要在实体上加 @JsonIgnoreProperties({ "handler",
// "hibernateLazyInitializer" })
User one = userRepository.findOne(id);

System.out.println(one);
return one;
}

源码可以知道:
/**
* Retrieves an entity by its id.
*
* @param id must not be {@literal null}.
* @return the entity with the given id or {@literal null} if none found
* @throws IllegalArgumentException if {@code id} is {@literal null}
*/
T findOne(ID id);

/**
* Returns a reference to the entity with the given identifier.
*
* @param id must not be {@literal null}.
* @return a reference to the entity with the given identifier.
* @see EntityManager#getReference(Class, Object)
*/
T getOne(ID id);

从错误中可以看出,这个返回值应该是hibernate产生的一个代理


错误原因和解决方法:

1. https://stackoverflow.com/questions/24994440/no-serializer-found-for-class-org-hibernate-proxy-pojo-javassist-javassist

2. https://segmentfault.com/a/1190000000768565
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐