Visualizzazione dei risultati da 1 a 6 su 6

Discussione: GWT e Serializzazione

  1. #1

    GWT e Serializzazione

    Salve a tutti,
    Ho un problema che riguarda la serializzazione degli oggetti in GWT.
    Utilizzo le chiamate RPC e come framework per la persistenza uso Hibernate.
    In pratica nel DAOCerca funziona tutto :

    codice:
    public ArrayList<Record> findCerca(Strin nome,String Cognome){
    Session session = sessionFactory.getCurrentSession(); session.beginTransaction();
    listaCercati = (ArrayList<Record>) super.findByCriteria(Restrictions.eq("nome",nome),Restrictions.eq("cognome",cognome));  
    session.getTransaction().commit();
    return listaCercati
    }
    il problema è quando faccio la chiamata RPC ovvero nel server :

    codice:
    public ArrayList<Record> cerca(String nome, String cognome){ 
    IDAOCerca daoCerca = new DAOCerca();
    ArrayList<Record> lista = null; 
     try { 
    lista = daoCerca.findCerca(nome, cognome); }
    catch (Exception e) { e.printStackTrace(); }
    return lista; }
    Se vado a vedere il log su Jetty mi lancia la seguente eccezzione :

    codice:
    Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.collection.PersistentSet' 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.
    Qualcuno ha risolto questo problema?
    Grazie mille.
    Saluti.

  2. #2
    E' un problema comune di GWT con l'utilizzo di ORM tipo Hibernate, JPA, ecc..
    In pratica, non puoi passare lo stesso oggetto da Hibernate all'interfaccia WEB, perchè GWT non riesce a serializzarlo. Quindi, ti dovresti creare un nuovo oggetto, ad esempio RecordDTO e aggiornare i campi con quelli presenti in Record.
    In alternativa ci sono dei tool che lo fanno in automatico (es. Dozer, ...).
    Ciao.

  3. #3

    GWT e Serializzazione

    Ok, grazie mille...proverò ad usare i DTO!

  4. #4

    GWT e Serializzazione

    Ciao, ho provato come dicevi tu :
    In pratica mi sono creata una classe PersoneCercateDTO che implementa Serializable
    e all'interno lo la lista delle mie persone cercate :

    codice:
    public class PersoneDTO implements Serializable{ 
    private ArrayList<Persone> listaPersoneCercate = new ArrayList<Persone>(); 
    
    public ArrayList<Persone> getListaPersoneCercate() 
    { return listaPersoneCercate; } 
    public void setListaPersoneCercate(ArrayList<Persone> listaPersoneCercate)
     { this.listaPersoneCercate = listaPersoneCercate; }
     public void add(Persone persona){ this.listaPazientiCercati.add(persone); } }
    una volta fatto questo mi chiamo RPC su PersoneDTO...!!
    Ma non funziona nemmeno cosi mi lancia sempre SerializationException!
    Dove sbaglio??

  5. #5

    GWT e Serializzazione

    Ovviamente del DAO quando faccio la query che mi ritorna la lista

    faccio:
    codice:
    personaDTO.setListaPersonaCercata(lista);

  6. #6
    Forse non mi sono spiegato bene.
    Il problema è la classe Persona, che tu devi mappare in nuova classe PersonaDTO. In pratica, se il DAO ti restituisce una lista di oggetti Persona, tu devi trasformala in una lista di PersonaDTO. Quindi dovresti fare qualcosa del genere:

    codice:
    for(Persona p : personaList) { 
    PersonaDTO personaDTO = new PersonaDTO(); 
    personaDTO.setNome(p.getNome()); 
    personaDTO.setCognome(p.getCognome()); 
    personaDTO.setIndirizzo(p.getIndirizzo()); 
    personaDTO.setEmail(p.getEmail()); 
    .... 
    nuovaLista.add(personaDTO);
    }
    Prova in questo modo e dovrebbe funzionare.
    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.