带java ArrayList的Hibernet

带java ArrayList的Hibernet,java,hibernate,serialization,Java,Hibernate,Serialization,我试图用ArrayList持久化对象(PERSON),但我得到以下执行选项: ERROR:2012-04-23 20:58:54,336 org.hibernate.property.BasicPropertyAccessor - IllegalArgumentException in class: Entities.Person, setter method of property: msgList ERROR:2012-04-23 20:58:54,336 org.hibernate.pr

我试图用ArrayList持久化对象(PERSON),但我得到以下执行选项:

ERROR:2012-04-23 20:58:54,336 org.hibernate.property.BasicPropertyAccessor  - IllegalArgumentException in class: Entities.Person, setter method of property: msgList
ERROR:2012-04-23 20:58:54,336 org.hibernate.property.BasicPropertyAccessor  - expected type: java.util.ArrayList, actual value: org.hibernate.collection.PersistentList
人员类别:

public class Person implements Serializable {

    static final long serialVersionUID = 1L;

    private long id;
    private String _email;
    private ArrayList<AnsMsg> msgList=new ArrayList<AnsMsg>();

     long getId() {
        return id;
    }
  public void setId(long id) {
    this.id = id;
}
  public String getEmail() {
    return _email;
}


public void set_email(String _email) {
    this._email = _email;
}

public ArrayList<AnsMsg> getMsgList() {

   return msgList;
}


public void setMsgList(ArrayList<AnsMsg> msgList) {
    this.msgList = msgList;
}
}
因为当我从DB Hibernate获取person时,返回
org.Hibernate.collection.PersistentList
,我需要序列化和反序列化这个对象(Java服务器和android应用程序),并且“org.Hibernate.collection.PersistentList”不是可序列化的(或者我错了,因为我在android端尝试反序列化时得到了null对象)

这是我的反序列化/序列化方法:

 public static byte[] serializeObject(Object o) { 
            ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

            try { 
              ObjectOutput out = new ObjectOutputStream(bos); 
              out.writeObject(o); 
              out.close(); 


              byte[] buf = bos.toByteArray(); 

              return buf; 
            } 
            catch(IOException ioe)
            { 


              return null; 
            }
              catch(Exception e)
                {


                return null;
                }

          } 

 public static Object deserializeObject(byte[] b) {



Object object=null;
          try { 


ObjectInputStream in = new ObjectInputStream(new       ByteArrayInputStream(b)); 
               object = in.readObject(); 
              in.close(); 

              return object; 
        } catch(ClassNotFoundException cnfe) { 


          return null; 
        } catch(IOException ioe) { 


          return null; 
        } 
        catch(Exception e)
        {

        String ex=e.toString();
        return object; 
        }
      }
更新:

当我尝试使用List代替ArrayList时

当我尝试在android端反序列化这个对象时 (使用“反序列化对象”方法)当我到达

object = in.readObject(); 
这是投球

java.lang.ClassNotFoundException: org.hibernate.collection.PersistentList. 
通过这种方式,我尝试使用ArrayList

如何映射此数组列表? 或者在这种情况下,有一种更好的方法来使用Hibernate


提前谢谢

您的POJO方法签名中的类型仍然是ArrayList,您需要将其更改为处处列出

您的POJO方法签名中的类型仍然是ArrayList,您需要将其更改为到处列表

您使用的是列表接口的实现
ArrayList
,hibernate正在返回,这也是列表接口的实现。因此,您不应该特定于ArrayList将ArrayList更改为java.util.List,这样它就可以接受java.util.List的任何实现。这也会解决你的问题

您使用的是
ArrayList
,这是列表接口的实现,而hibernate正在返回,这也是列表接口的实现。因此,您不应该特定于ArrayList将ArrayList更改为java.util.List,这样它就可以接受java.util.List的任何实现。这也会解决你的问题

我知道你走错了方向。 以下是您拥有的选项:

  • 将实体复制到POJO并发送到android设备。(无效)
  • 将hibernate作为库添加到android应用程序中。这对于android来说太多了。(膨胀你的android应用程序)
  • 使用不同的序列化方式(JSON、XML)

我将使用不同的序列化方法—JSON。有一些库可以让这个过程非常轻松。

我知道你走错了方向。 以下是您拥有的选项:

  • 将实体复制到POJO并发送到android设备。(无效)
  • 将hibernate作为库添加到android应用程序中。这对于android来说太多了。(膨胀你的android应用程序)
  • 使用不同的序列化方式(JSON、XML)

我将使用不同的序列化方法—JSON。有一些库使这个过程非常轻松。

我知道这一点,但问题是当我尝试在android端反序列化这个对象(使用“deserializeObject”方法)时,当我到达object=in.readObject()时;行,它是抛出java.lang.ClassNotFoundException:org.hibernate.collection.PersistentList。通过这种方式,我尝试使用ArrayList,我知道这一点,但问题是当我在android端尝试反序列化这个对象时(使用“deserializeObject”方法),当我到达object=in.readObject()时;行,它是抛出java.lang.ClassNotFoundException:org.hibernate.collection.PersistentList。通过这种方式,我尝试使用arrayLIST
object = in.readObject(); 
java.lang.ClassNotFoundException: org.hibernate.collection.PersistentList.