You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
By clicking “Sign up for GitHub”, you agree to our
terms of service
and
privacy statement
. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: could not initialize proxy - no Session
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: could not initialize proxy - no Session
vladimiry
opened this issue
Oct 4, 2012
· 1 comment
spring-data-jpa 1.1.0.RELEASE
hibernate 4.1.7.Final
jackson-module-hibernate 2.0.2 (2.0.0 also tryed)
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]->smind.core.domain.ContentLink["tags"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]->smind.core.domain.ContentLink["tags"])
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:196)
org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:149)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:157)
org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:717)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:660)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:804)
javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
Initialize (Java Config):
@Bean
public AnnotationMethodHandlerAdapter adapter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(new HibernateAwareObjectMapper());
AnnotationMethodHandlerAdapter adapter = new AnnotationMethodHandlerAdapter();
adapter.setMessageConverters(new HttpMessageConverter[] { converter });
return adapter;
HibernateAwareObjectMapper:
package smind.web.rest.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module;
public class HibernateAwareObjectMapper extends ObjectMapper {
public HibernateAwareObjectMapper() {
Hibernate4Module hm = new Hibernate4Module();
hm.configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, false);
registerModule(hm);
configure(SerializationFeature.INDENT_OUTPUT, true);
ContentLink:
package smind.core.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
@Entity
public class ContentLink extends AbstractContent {
private static final long serialVersionUID = -6690443064244655726L;
private String note;
private String url;
public ContentLink() {
super();
@Column(length = 2048)
public String getNote() {
return note;
@Column(length = 8192, nullable = false)
public String getUrl() {
return url;
public void setNote(String note) {
this.note = note;
public void setUrl(String url) {
this.url = url;
AbstractContent ("tags" marked as "lazy"):
package smind.core.domain;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class AbstractContent extends AbstractDomain {
private static final long serialVersionUID = 5533781610346361703L;
private List tags;
private String title;
private User user;
@ManyToMany(mappedBy = "contents", fetch = FetchType.LAZY)
public List getTags() {
return tags;
@Column(length = 512, nullable = false)
public String getTitle() {
return title;
@ManyToOne(fetch = FetchType.LAZY)
public User getUser() {
return user;
public void setTags(List tags) {
this.tags = tags;
public void setTitle(String title) {
this.title = title;
public void setUser(User user) {
this.user = user;
It's my fault, I incorrectly registered message converter (Hibernate4Module in java configuration), correct registration is shown below:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "smind.web.rest" })
@PropertySource("classpath:/spring/spring-web-rest.properties")
public class WebRestConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List> converters) {
super.configureMessageConverters(converters);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(new HibernateAwareObjectMapper());
converters.add(converter);
Necessary to extend "WebMvcConfigurerAdapter" and then register own message converter in overrided "configureMessageConverters" method.