Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring GWT:序列化异常_Spring_Hibernate_Gwt - Fatal编程技术网

Spring GWT:序列化异常

Spring GWT:序列化异常,spring,hibernate,gwt,Spring,Hibernate,Gwt,我正在尝试使用GWT+Spring+Hibernate 当快速移动应用程序时,出现以下错误: com.google.gwt.user.client.rpc.SerializationException:类型“org.hibernate.collection.PersistentBag”未包含在此可由此序列化策略序列化的类型集中,或者无法加载其类对象。出于安全目的,不会序列化此类型。示例=[com.asso.shared.model]。Activite@64d6357a] 在对持久性类列表使用此方

我正在尝试使用GWT+Spring+Hibernate 当快速移动应用程序时,出现以下错误:

com.google.gwt.user.client.rpc.SerializationException:类型“org.hibernate.collection.PersistentBag”未包含在此可由此序列化策略序列化的类型集中,或者无法加载其类对象。出于安全目的,不会序列化此类型。示例=[com.asso.shared.model]。Activite@64d6357a]

在对持久性类列表使用此方法后:

public static <T> ArrayList<T> makeGWTSafe(List<T> list) {
        if(list instanceof ArrayList) {
            return (ArrayList<T>)list;
        } else {
            ArrayList<T> newList = new ArrayList<T>();
            newList.addAll(list);
            return newList;
        }
    }
publicstaticarraylistmakegwtsafe(列表){
if(列出ArrayList的实例){
返回(ArrayList)列表;
}否则{
ArrayList newList=新的ArrayList();
newList.addAll(列表);
返回newList;
}
}
根据我的清单,我得到了:

com.google.gwt.user.client.rpc.SerializationException:类型“org.hibernate.collection.PersistentBag”未包含在此可由此序列化策略序列化的类型集中,或者无法加载其类对象。出于安全目的,不会序列化此类型。示例=[com.asso.shared.model]。Personne@75a2fb58]

==========================================

我已经搜索了其他主题,但我找不到任何解决方案! 我怎样才能解决这个序列化问题!?
我在我的持久性类中使用列表,您需要将DTO对象发送到客户端(而不是Hibernate支持的原始对象)。问题是您的Personne对象实际上是一个Hibernate代理。每次调用它的某个方法时,Hibernate都会执行一些工作(例如从DB获取集合)。没有简单的方法可以序列化此类对象

休眠实体:

//Hibernate entity
public class Personne {

    private String name;
    private List<Address> addresses;
}

//Hibernate entity
public class Address {


}
//休眠实体
公职人员{
私有字符串名称;

私人列表了解更多详细信息。

请给我一个非常清楚的解释,如果可能的话,我需要一个可运行的示例!如果你能做到这一点,你应该知道你救了我,一个地球上某个地方的陌生人:add(Personne p)起作用了,但是当涉及到get()时我有这个序列化错误,我不知道如何以及在哪里使用DTO类!在服务器端,我正在操作Personne类,并且我与其他类有很多关系!我如何使用DTO在本文中有一个详细的示例。这对您更清楚?那么,使用DTO的方法对您有帮助吗?
public class PersonneDto {

    private String name;
    private List<AddressDto> addresses;
}

public class AddressDto {


}