0

以下は休止状態でアプリケーションを開発しましたが、pojo のものですが、マッピング例外が発生しています。アドバイスしてください

これが私の人のポジョです..

 package mypack;

public class Person
{
     private int personId;
     private String name;
     private Address address;
    public Person() 
    {
        super();
    }
    public Person(String name, Address address) 
    {
        super();
        this.name = name;
        this.address = address;
    }
    public int getPersonId() {
        return personId;
    }
    public void setPersonId(int personId) {
        this.personId = personId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    }

アドレスpojoは

    package mypack;

public class Address 
{
     private int id;
     private String city,state;

    public Address()
    {
        super();

    }

    public Address(String city, String state)
    {
        super();
        this.city = city;
        this.state = state;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
     }

対応する hbm マッピング ファイルは pkfk.hbm.xml です。

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-mapping>
<class name="mypack.Person">
<id name="personId" type="int">
<generator class="increment"/>
</id>
<property name="name"/>
<many-to-one name="address" class="mypack.Address" column="addressId" unique="true" cascade="all"/>
</class>


<class name="mypack.Address">
<id name="id" column="addressId" type="int">
<generator class="increment"/>
</id>
<property name="city"/>
<property name="state"/>
</class>
</hibernate-mapping>

私のメインプログラムファイルは...

package mypack;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class TestProgram 
{
    public static void main(String[] args)
    {
      try
      {
       SessionFactory sesfac=new Configuration().configure().buildSessionFactory();
       Session ses=sesfac.openSession();
       Person p=new Person("Anupam",new Address("Noida","U.P"));
       Person p1=new Person("Rekha Singh",new Address("Kanpur","U.P"));
       System.out.println("Persisting Object...");
       Transaction tx=ses.beginTransaction();
       ses.save(p);
       ses.save(p1);
       tx.commit();
       System.out.println("Successfully Persisted.");
       ses.close();
      }
      catch(Exception e)
      {
          System.out.println(e);
      }
    }
}

メインファイルを実行すると、次のエラーが発生します..

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.InvalidMappingException: Could not parse mapping document from resource samePK.hbm.xml

この無効なマッピング例外の原因と修正方法を教えてください

4

2 に答える 2

0

ファイルpkfk.hbm.xmlに名前を付けると、Hibernate は読み取りを試みますsamePK.hbm.xml。メインの設定ファイルが間違っているに違いありません。

于 2012-07-29T12:21:52.150 に答える
0

spring と hibernate の統合を使用しているときに誰かが無効なマッピング例外で動けなくなった場合は、springbean.xml ファイルのスペルミスを注意深く確認してください (指定されたものは何でも)、hibernate.hbm.xml ファイル bcs を注意深く確認してください。スペルミスの原因。1) hbm ファイルに対応する正しい変数名; 2)すべてのゲッター/セッターが存在するかどうか。3) コンストラクタのようにClassPathXmlApplicationContextを渡してspringbean.xml ファイルをロードする場合、そのスペル名をチェックします。4) id タグは、その型が String または int のいずれかである必要があります。long any one k

これは私があなたと共有する私の経験です。これがすべての人にとって役立つことを願っています。

于 2013-06-16T08:03:02.407 に答える