2012-11-23 37 views
-1

我正在使用netBeans IDE中的hibernate和JSF創建一個小應用程序。我的項目對主人很好。現在我需要再添加一個包含與主人關係的表格。該方案是遵循休眠或Netbeans不允許外鍵表進行逆向工程

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$$ 

然後我試圖產生通過在NetBeans反向工程嚮導它節選只有Table 1和Table逆向工程文件。它將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> 

當我刪除外鍵它可以讓我產生表3映射文件和POJO。 我無法理解爲什麼它不允許外鍵概念。 它是MySQL表創建錯誤或netbeans錯誤或休眠問題?

任何人可以提供我解決這個問題?在此先感謝......

回答

0

它在table1和table2實體中生成多對多關係。如果刪除外鍵關係,那麼它將創建爲一對多。請將table1和table2實體。

+0

對不起,但沒有必要這樣做。 – mrugeshthaker

1

我找到了解決方案。我在windows上使用mysql,因此lower_case_table_names = 2的默認值。我已將其設置爲1.還要將所有表格都重命名爲小寫。 然後嘗試生成映射和pojos ....成功。

結論

如果您在使用Hibernate和Windows上運行的MySQL數據庫,請確保您的表名都是小寫。