Почему составной идентификатор класса должен реализовывать Serializable? - PullRequest
42 голосов
/ 14 февраля 2012

Если я создаю класс составного идентификатора, который не реализует Serializable, например:

@Entity
@Table(name = "board")
public class Board {
    @Id
    @Column(name = "keyword_news_id")
    private int id;

    @Id
    @Column(name = "board_no")
    private int boardNo;
....

Ошибки возникают как:

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)

Классы сущностей Hibernate недолжен быть сериализуемым .Тогда, почему класс композитного идентификатора должен реализовывать Serializable?Я прочитал эту ветку , но она не дала мне достаточно информации.

1 Ответ

55 голосов
/ 14 февраля 2012

Объект сеанса должен быть сериализуемым, поэтому все объекты, на которые он ссылается, также должны быть сериализуемыми. Идентификатор используется в качестве ключа для индексации загруженных объектов в сеансе. В случае CompositeId s сам класс используется в качестве идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...