-1

私は、netBeans IDE で休止状態と JSF を使用する小さなアプリケーションに取り組んでいます。私のプロジェクトはマスターとうまく機能します。ここで、それらのマスターとの関係を含むテーブルをもう 1 つ追加する必要があります。シナリオは以下の通り

delimiter $$

CREATE TABLE `TABLE_1` (
`ID1` int(11) NOT NULL default '0',
`ID1_DESC` varchar(45) default NULL,
PRIMARY KEY  (`ID1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$

delimiter $$

CREATE TABLE `TABLE_2` (
`ID2` int(11) NOT NULL default '0',
`ID2_DESC` varchar(45) default NULL,
PRIMARY KEY  (`ID2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$

delimiter $$

CREATE TABLE `TABLE_3` (
`ID3` int(3) NOT NULL default '0',
`ID1` int(3) NOT NULL,
`ID2` int(3) NOT NULL,
`ID3_DESC` varchar(45) default NULL,
PRIMARY KEY  (`ID3`),
KEY `FK_ID1_idx` (`ID1`),
KEY `FK_ID2_idx` (`ID2`),
CONSTRAINT `FK_ID1` FOREIGN KEY (`ID1`) REFERENCES `table_1` (`ID1`) ON UPDATE CASCADE,
CONSTRAINT `FK_ID2` FOREIGN KEY (`ID2`) REFERENCES `table_2` (`ID2`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$

次に、TABLE1 と TABLE2 のみを除いて、netbeans のリバース エンジニアリング ウィザードを使用してリバース エンジニアリング ファイルを生成しようとしました。Table3 を Table3 (主キーなし) として表示します。また、リバース エンジニアリング ファイルに Table3 が含まれていません。

生成された hibernate.cfg.xml ファイルは

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/TESTSCHEMA?zeroDateTimeBehavior=convertToNull</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
</session-factory>
</hibernate-configuration>

外部キーを削除すると、TABLE3 マッピング ファイルと POJO を生成できます。なぜ外部キーの概念が許可されないのか理解できません。mysql テーブルの作成ミスか、netbeans のバグか、ハイバネートの問題か????

誰でもこの問題の解決策を提供できますか? 前もって感謝します....

4

2 に答える 2

1

私は解決策を見つけました。Windows で mysql を使用しているため、lower_case_table_names=2 のデフォルト値です。1に設定しました。また、すべてのテーブルの名前を小文字に変更します。次に、マッピングと pojos を生成しようとしました....成功しました。

結論

Hibernate と Windows で実行されている MySQL データベースを使用している場合は、テーブル名がすべて小文字であることを確認してください。

于 2012-11-23T08:12:48.757 に答える
0

table1エンティティとtable2エンティティの両方で多対多のリレーションシップを生成します。外部キーリレーションを削除すると、1対多として作成されます。table1エンティティとtable2エンティティを表示してください。

于 2012-11-23T06:46:18.730 に答える