title: Why composite-id class must implement Serializable?
body: <p>If I make a composite-id class which doesn't implement Serializable like:</p>
  
  <pre><code>@Entity
  @Table(name = "board")
  public class Board {
      @Id
      @Column(name = "keyword_news_id")
      private int id;
  
      @Id
      @Column(name = "board_no")
      private int boardNo;
  ....
  </code></pre>
  
  <p>Errors occur like:</p>
  
  <pre><code>Caused by: org.hibernate.MappingException: composite-id class must implement Serializable: com.estinternet.news.domain.IssueNewsBoard
      at org.hibernate.mapping.RootClass.checkCompositeIdentifier(RootClass.java:263)
      at org.hibernate.mapping.RootClass.validate(RootClass.java:244)
      at org.hibernate.cfg.Configuration.validate(Configuration.java:1362)
      at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1865)
      at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860)
      at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779)
      at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
  </code></pre>
  
  <p><a href="https://stackoverflow.com/questions/2726300/do-hibernate-table-classes-need-to-be-serializable">Hibernate entity classes doesn't need to be Serializable</a>. Then, why does composite-id class must implement Serializable? I read <a href="https://forum.hibernate.org/viewtopic.php?f=1&amp;t=959637" rel="noreferrer">this thread</a>, but it didn't give me enough information. </p>