2012-05-04 18 views
0

が存在するにもかかわらず発生していないのhbm.xmlは、私は私のDBに3つのテーブルを持っている<表-フィルタ一致-name>は

  • アドレス
  • person_address

このスクリプトはSQLです

CREATE TABLE IF NOT EXISTS `address` (
    `address_id` int(11) NOT NULL AUTO_INCREMENT, 
    `address` varchar(30) NOT NULL, 
    PRIMARY KEY (`address_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; 

CREATE TABLE IF NOT EXISTS `person` (
    `person_id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(30) NOT NULL, 
    PRIMARY KEY (`person_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; 

CREATE TABLE IF NOT EXISTS `person_address` (
    `person_id` int(11) NOT NULL, 
    `address_id` int(11) NOT NULL, 
    PRIMARY KEY (`person_id`,`address_id`), 
    KEY `address_id` (`address_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

ALTER TABLE `person_address` 
    ADD CONSTRAINT `person_address_ibfk_2` FOREIGN KEY (`address_id`) REFERENCES `address` (`address_id`) ON DELETE CASCADE ON UPDATE CASCADE, 
    ADD CONSTRAINT `person_address_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `person` (`person_id`) ON DELETE CASCADE ON UPDATE CASCADE; 

これはhですibernate.reveng.xmlファイル

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd"> 
<hibernate-reverse-engineering> 
    <schema-selection match-catalog="manyToManyTest"/> 
    <table-filter match-name="person_address"/> 
    <table-filter match-name="address"/> 
    <table-filter match-name="person"/> 
</hibernate-reverse-engineering> 

問題は(hibernate.cfg.xmlのにエントリ<mapping resource="pojos/PersonAddress.hbm.xml"/>はありません)POJOとHBMファイルを生成するときに、personAddressのPOJOが生成されていないということです、なぜですか?

答えて

0

PersonAddressクラスとPersonAddress.hbm.xmlを生成しないでください。理由は、デフォルトでは、データベースは2つのエンティティ、つまりPersonとAddress、およびそれらの多対多の関係にマップされるということです。

チェック(Address.hbm.xml中と逆)Person.hbm.xmlを行うような何か含まれています:はい、その後、すべてが正常であれば

<set ...> 
     ... 
    <many-to-many class="Address"> 
</set> 

を。

+0

ありがとうございました。はい、PersonAddressクラスとPersonAddress.hbm.xmlは生成しないはずです(このチュートリアル[リンク](http://netbeans.org/kb/docs/)に従うと、それは分かりません) web/hibernate-webapp.html)。これは私に全面的に誤解を招いていた。 問題は、(接続をテストするために) 'Personから' HQLクエリを実行すると、 'org.hibernate.MappingException:テーブルperson_addressからの関連付けはマップされていないクラスを参照しています:pojos.Address' – ahmehri

関連する問題