¿Cómo convertir correctamente la lista de objetos específicos a Gson?

Estoy trabajando en el proyecto Spring MVC. Estoy usando Hibernate. Quiero usar AJAX con jQuery para obtener algunos JSON de mis controladores Spring. Desafortunadamente cuando estaba implementandoGson Métodos en mi aplicación Tengo un error:

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: 
org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?

¿Qué adaptador tengo que usar y de qué manera? El error se ha producido en la última línea del método:

public String messagesToJson(List<Message> messages) {
    Gson gson = new Gson();     
    List<Message> synchronizedMessages = Collections.synchronizedList(messages);
    return gson.toJson(synchronizedMessages, ArrayList.class);
}

Este es miMessage Clase que estoy usando en mi proyecto Spring MVC con Hibernate:

@Entity
@Table(name = "MESSAGES", schema = "PUBLIC", catalog = "PUBLIC")
public class Message implements java.io.Serializable {

    private static final long serialVersionUID = 1L;
    private int messageId;
    private User users;
    private String message;
    private Date date;

    //Constructor, getters, setters, toString
}

EDITAR

Me pregunto: miMessage objeto es proxy o el todoList<Message>? Estoy recibiendo la lista de mensajes de esta manera:

public List<Message> findAllUserMessages(String username) {
    Query query = entityManager.createQuery("from Message where username = :username order by date desc")
            .setParameter("username", username);

    @SuppressWarnings("unchecked")
    List<Message> messages = query.getResultList();
    return messages;
}

Editar 2

No miList<Message> El objeto no es proxy.

Respuestas a la pregunta(3)

Su respuesta a la pregunta