2012-03-10 1 views
1

J'utilise GWT, Hibernate et Gilead et je ne débarrassons pas de l'exception de sérialisation:exception de sérialisation à mise en veille prolongée instruction de jointure

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. 

Je fais JOIN dans la mise en veille prolongée Query Language qui provoque la erreur:

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(); 

le code pour les classes sont:

@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() { 

    } 

-ce que quelqu'un kno ws une solution pour cela?

Répondre

0

Le problème que vous voyez ici est dû au fait que l'objet qui est chargé par le

query.list() 

appel ne se charge pas UserEvents. Il charge un proxy dynamique de UserEvent. Hibernate utilise des objets proxy pour intercepter les appels aux objets liés chargés paresseux. Il existe des bibliothèques qui peuvent vous aider (EG http://www.jboss.org/errai).

Une autre chose que vous pouvez faire est de convertir vos entités JPA en POJO avant d'essayer de les sérialiser, ce qui devrait garantir que les proxies ne vous gênent pas.

Questions connexes