-2

私は何をしようとしていますか?プロジェクトの読み込み中に、奇妙な例外が発生します。

rezg.admin.server.objects.common.pojo.EmailLogDetails、プロパティのセッターメソッド: id

postgres を使用して、オブジェクト (永続化) を DB に保存します。環境は Jboss 4 環境の Java 6 、Hibernate 3 です。jar には「EmailLogDetails」が含まれており、Jboss lib フォルダーにあります。

予想される型: java.lang.Integer、実際の値: java.lang.Integer IllegalArgumentException クラス: rezg.admin.server.objects.common.pojo.EmailLogDetails、プロパティのセッター メソッド: id

org.hibernate.PropertyAccessException: org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104) で rezg.admin.server.objects.common.pojo.EmailLogDetails.Id のセッターを呼び出しているときに IllegalArgumentException が発生しました。 .tuple.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:204) org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3261) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:157) ) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:114) で.....

原因: java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42) ... 74 詳細

メールログの詳細:

public class EmailLogDetails  implements java.io.Serializable {

private static final long serialVersionUID = 1L;
private java.lang.Integer id;
private String reservationNo;
private String mailSubject;
private String fromAddress;

public String getFromAddress() {
    return fromAddress;
}
public void setFromAddress(String fromAddress) {
    this.fromAddress = fromAddress;
}
public java.lang.Integer getId() {
    return id;
}
public void setId(java.lang.Integer id) {
    this.id = id;
}
public String getMailSubject() {
    return mailSubject;
}
public void setMailSubject(String mailSubject) {
    this.mailSubject = mailSubject;
}
public String getMailType() {
    return mailType;
}
}

XML

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "../server/default/conf/hibernate-mapping-3.0.dtd">

<hibernate-mapping auto-import="false" schema="@@portalname@@_admin">
<class   name="rezg.admin.server.objects.common.pojo.EmailLogDetails" table="emaillogdetails">

      <id name="Id" column="id" type="java.lang.Integer">
        <generator class="sequence">
          <param name="sequence">@@portalname@@_admin.seq_emaillogdetails</param>
        </generator>
    </id>

    <property name="reservationNo"  type="java.lang.String" >
        <column name="reservationno" length="20" not-null="false" sql-type="varchar" />
    </property>

    <property name="mailSubject"  type="java.lang.String" >
        <column name="mailsubject" length="500" not-null="false" sql-type="varchar" />
    </property>
4

1 に答える 1

0

見た目では、デフォルトのコンストラクターがありません。Hibernate は、DB とクラスの間のマッピング情報のインポートとエクスポートをいじる前に、デフォルトのコンストラクターを探してインスタンスを作成します。

于 2013-06-11T07:31:45.930 に答える