私はSpring MVCプロジェクトに取り組んでいます。私は休止状態を使用しています。 Spring ControllerからJSONを取得するために、jQueryでAJAXを使用したいと思います。アダプター私が使用してどのようにする必要が特定のオブジェクトのリストをGsonに正しく変換するには?
java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class:
org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?
:私は自分のアプリケーションでGson
メソッドを実装しました残念ながら、ときに私はエラーを持っていますか?
@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
}
EDIT
I:これは私が休止状態で私のSpring MVCのプロジェクトで使用しています私のMessage
クラスは
public String messagesToJson(List<Message> messages) {
Gson gson = new Gson();
List<Message> synchronizedMessages = Collections.synchronizedList(messages);
return gson.toJson(synchronizedMessages, ArrayList.class);
}
です:エラーはメソッドの最後の行で発生しました不思議です:私のMessage
オブジェクトがプロキシされているか、全体がList<Message>
ですか?私は、このようにメッセージのリストを取得しています:
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;
}
EDIT 2
いいえ、私のList<Message>
オブジェクトがプロキシされていません。
これはおそらく、hibernateがあなたのオブジェクトの代理を作成するためです。したがって、パラメータ 'List messages'はそのプロキシを処理できません。スタックトレースから見ると、 'org.hibernate.proxy.HibernateProxy'をシリアル化しようとしています。おそらく、実行時に 'cglib'をバイトコードの操作で使用して、プロキシを作成しないようにすることができます。 –
madhead
Hibernateオブジェクトを通常のオブジェクトにマッピングする必要があります。 – Tomer
私は単にHibernateオブジェクトに似たPOJOクラスを作成する必要がありますが、注釈は必要ありません。 @madheadしかし、 'cglib'を使うと、私は過度のことに思えます。 – woyaru