【问题标题】:Hibernate or Netbeans not allowing foreign key tables for reverse engineeringHibernate 或 Netbeans 不允许外键表进行逆向工程
【发布时间】:2012-11-23 06:33:18
【问题描述】:

我正在 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的逆向工程向导生成逆向工程文件,除了TABLE1和TABLE2。它将 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 bug还是hibernate问题???

任何人都可以为我提供这个问题的解决方案吗?提前谢谢....

【问题讨论】:

    标签: mysql hibernate netbeans-6.9


    【解决方案1】:

    我找到了解决方案。我在windows上使用mysql所以lower_case_table_names=2的默认值。我已将其设置为 1。还将所有表重命名为小写。 然后尝试生成映射和pojos....成功了。

    结论

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 对不起,没必要这样做。
      猜你喜欢
      • 2014-06-25
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2011-07-18
      • 2011-03-13
      • 2012-03-10
      • 1970-01-01
      • 2014-11-24
      相关资源
      最近更新 更多