исключение сериализации в операторе соединения hibernate - PullRequest
1 голос
/ 10 марта 2012

Я использую GWT, Hibernate и Gilead и не избавляюсь от исключения сериализации:

com.google.gwt.user.client.rpc.SerializationException: Type '[Ljava.lang.Object;' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.

Я делаю JOIN на языке запросов Hibernate, который вызывает ошибку:

List<UserEvent> userEvents = session.createQuery(
    "FROM UserEvent as userevent JOIN userevent.event as event WHERE userevent.user = ? AND userevent.status = 'JOIN' ORDER BY event.eventBegin ASC")
    .setLong(0, user.getUserID()).setFirstResult(start).setMaxResults(maxResult).list();

код для занятий:

@Entity
public class UserEvent extends LightEntity implements Serializable {

    private static final long serialVersionUID = -291120580889352994L;

    @Id
    @ManyToOne
    @JoinColumn(name = "user_userid")
    private User user;

    @Id
    @ManyToOne
    @JoinColumn(name = "event_eventid")
    private Event event;

    @Enumerated(EnumType.STRING)
    private EventStatus status;

    private Long time;

    public UserEvent() {

    }



@Entity
public class Event extends LightEntity implements Serializable {

    private static final long serialVersionUID = -2504468186803850440L;

    @Id
    @GenericGenerator(name = "event_seq", strategy = "webapp.hibernate.EventSeq")
    @GeneratedValue(generator = "event_seq")
    private Long eventID;

    private Long eventBegin;

    public Event() {

    }

Кто-нибудь знает решение для этого?

1 Ответ

0 голосов
/ 10 марта 2012

Проблема, которую вы видите здесь, связана с тем, что объект, который загружается вызовом

query.list()

, не загружает UserEvents.Это загрузка динамического прокси UserEvent.Hibernate использует прокси-объекты для перехвата вызовов лениво загруженных связанных объектов.

Существуют библиотеки, которые могут помочь с этим (EG http://www.jboss.org/errai).

Еще одна вещь, которую вы можете сделать, - это преобразовать ваши объекты JPAPOJO, прежде чем пытаться их сериализовать, что должно гарантировать, что прокси не будут мешать.

...