Mysql Hibernate或Netbeans不允许外键表用于反向工程

Mysql Hibernate或Netbeans不允许外键表用于反向工程,mysql,hibernate,netbeans-6.9,Mysql,Hibernate,Netbeans 6.9,我正在使用netBeans IDE中的hibernate和JSF开发一个小应用程序。我的项目与大师们合作得很好。现在,我需要再添加一个表,其中包含与这些主节点的关系。情况如下 delimiter $$ CREATE TABLE `TABLE_1` ( `ID1` int(11) NOT NULL default '0', `ID1_DESC` varchar(45) default NULL, PRIMARY KEY (`ID1`) ) ENGINE=InnoDB DEFAULT CHARS

我正在使用netBeans IDE中的hibernate和JSF开发一个小应用程序。我的项目与大师们合作得很好。现在,我需要再添加一个表,其中包含与这些主节点的关系。情况如下

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的反向工程向导生成反向工程文件,但表1和表2除外。它将表3显示为表3(无主键)。此外,它不包括反向工程文件中的表3

生成的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>

org.hibernate.dialogue.mysqlinnodbdialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/TESTSCHEMA?zeroDateTimeBehavior=convertToNull
根
真的
线
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
当我删除外键时,它允许我生成TABLE3映射文件和POJO。 我无法理解为什么它不允许外键概念。 是mysql表创建错误还是netbeans错误或休眠问题


有谁能为我提供解决这个问题的办法吗?提前感谢….

它在table1和table2实体中生成多对多关系。如果删除外键关系,则将其创建为一对多。请显示table1和table2实体。

我找到了解决方案。我在windows上使用mysql,因此小写字母表名称的默认值=2。我已将其设置为1。同时将所有表格重命名为小写。 然后尝试生成映射,POJO…成功

结论


如果您使用的是在windows上运行的Hibernate和MySQL数据库,请确保您的表名都是小写。

抱歉,无需这样做。