0

私は以下を含むこのクラスでHibernateを使用しようとしました ArrayList:

しかし、私はこの例外を受け取ります:

expected type: java.util.ArrayList, actual value: org.hibernate.collection.PersistentList 

(Listだけがシリアライズ可能ではなく、それが問題になるため、Arraylistを使用する必要があります)

この例外は、jpa entitymanager の開始時にスローされます。

これはクラスです:

package Entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


import msg.AnsMsg;


public class Person implements Serializable {

    static final long serialVersionUID = 1L;

    private long id;
    public long getId() {
        return id;
    }


    public void setId(long id) {
        this.id = id;
    }


    private String _email;

    private ArrayList <AnsMsg> msgList=new ArrayList<AnsMsg>();



   public ArrayList <AnsMsg> getMsgList() {

       return msgList;
    }


    public void setMsgList(ArrayList <AnsMsg> msgList) {
        this.msgList = msgList;
    }






    public Person(){}


    public String getEmail() {
        return _email;
    }


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

これはhbmファイルです:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Apr 17, 2012 9:20:13 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="Entities.Person" table="PERSON">
        <id name="id" type="long">
            <column name="ID" />
            <generator class="increment" />
        </id>
        <property name="_email" type="java.lang.String" access="field">
            <column name="_EMAIL" />
        </property>

        <list name="msgList" inverse="false" table="ANSMSG" lazy="true">
            <key>
                <column name="ID" />
            </key>
            <list-index></list-index>
            <one-to-many class="msg.AnsMsg" />
        </list>

    </class>
</hibernate-mapping>

java Arraylist を hibernate で使用するにはどうすればよいですか。よろしくお願いします。

4

2 に答える 2

0

実際の ArrayList クラスではなく、インターフェイス List を関連付ける必要があると思います。PersistetList のドキュメントhttp://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/collection/PersistentList.htmlを見ると、java.util.List が実装されています。

于 2012-04-17T21:23:58.910 に答える
0

Hibernate Javadocによると、PersistentList もシリアライズ可能です。POJO は List への参照を持つことができますが、実行時および PersistentList のインスタンス (シリアライズ可能) を使用する必要があります。

簡単に言えば、List インターフェイスを使用するだけです。

于 2012-04-17T21:34:34.860 に答える