t3s0
t3s0

Reputation: 282

HibernateSystemException: could not deserialize

I looked through several posts with a similar topic, but none of these was helping me.

I'm using the following technologies: Spring 3.2.3.RELEASE Hibernate 3.5.1-Final Spring Security 3.2.3.RELEASE

My initial position is,that I have three classes (User, Workout and Event) which have relations between each other. Here are the necessary parts of the classes:

User.java

@Entity
@Table
@ManagedBean
public class User implements java.io.Serializable
{
  private static final long serialVersionUID = 1L;
  private Integer id;
  private List<Workout> performances = new ArrayList<Workout>();

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  public Integer getId()
  {
    return id;
  }

  public void setId(Integer id)
  {
    this.id = id;
  }

@OneToMany(mappedBy = "user")
  public List<Workout> getPerformances()
  {
    return performances;
  }

  public void setPerformances(List<Workout> performances)
  {
    this.performances = performances;
  }

Workout.java

@Entity
@Table
public class Workout implements java.io.Serializable
{
  private static final long serialVersionUID = 1L;
  private int id;
  private User user;
  private Event event;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  public int getId()
  {
    return id;
  }

  public void setId(int id)
  {
    this.id = id;
  }

  @ManyToOne
  @JoinColumn(name = "user_fk")
  public User getUser()
  {
    return user;
  }

  public void setUser(User user)
  {
    this.user = user;
  }

  @ManyToOne
  @JoinColumn(name = "e_fk")
  public Event getEvent()
  {
    return event;
  }

  public void setEvent(Event event)
  {
    this.event = event;
  }

Event.java

@Entity
@Table
public class Event implements java.io.Serializable
{
  private static final long serialVersionUID = 1L;
  private Integer id;
  private List<Workout> workouts = new ArrayList<Workout>();

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  public Integer getId()
  {
    return id;
  }

  public void setId(Integer id)
  {
    this.id = id;
  }

  @OneToMany(mappedBy = "event")
  public List<Workout> getWorkouts()
  {
    return workouts;
  }

  public void setWorkouts(List<Workout> workouts)
  {
    this.workouts = workouts;
  }

Here the method in WorkoutDaoImpl, which get all the workouts with an Event (this one is called on my xhtml site):

 public int getWorkoutsByUserId(String id)
  {    
     return
     (List<Workout>)getHibernateTemplate().find("from Workout where user_fk       like '" + id + "' and e_fk IS NOT null");
  }

So and here the Stacktrace

javax.el.ELException: /workout.xhtml @19,101 value="#{workoutDao.getWorkoutsByUserId(user.id)}": org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) at javax.faces.component.UIData.getValue(UIData.java:732) at org.primefaces.component.api.UIData.getDataModel(UIData.java:758) at javax.faces.component.UIData.getRowCount(UIData.java:356) at org.primefaces.component.api.UIData.calculateFirst(UIData.java:209) at org.primefaces.component.datatable.DataTableRenderer.preRender(DataTableRenderer.java:115) at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903) at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.myApp.helpers.CharsetFilter.doFilter(CharsetFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.el.ELException: org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize at javax.el.BeanELResolver.invoke(BeanELResolver.java:489) at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161) at org.apache.el.parser.AstValue.getValue(AstValue.java:173) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)

My personal opinion is, that I may have a hibernate mapping problem (in cause of the serialization problem). My hibernate query does sometimes work, when I'm searching for e_fk is NULL, thats quite interesting. In the end of the stack trace there is also some java.io.StreamCorruptedException: invalid stream header: 7777772E Exception, maybe this will help.

I have searched through all posts, would be awesome, if you have any ideas. If you need more files, just ask for. The applicationContext and also the hibernateProperties should be right.

Thank you.

Upvotes: 2

Views: 498

Answers (1)

t3s0
t3s0

Reputation: 282

So, the problem was quite annoying. I had a field of the type URL, which could not get serialized. So everybody who got this exception. Check all your fields for special data types and give them the right annotation.

And also don't forget to do the right mapping (mappedBy), this should solve your problems. You don't need to implement Serializable or @Transient.

Upvotes: 2

Related Questions