返回列表 发帖

[ORM框架] 轻量级JAVAEE第三版Hibernate的一个问题

轻量级JAVAEE第三版Hibernate的第一个例子(hibernateDemo),我按照书上的方法,运行NewsManager类(P370)报错,提示是没找到hibernate.news_table这张表。我觉得应该是他自己会创建表的,为什么他没有自动创建呢?后来我把配置文件改了一下,就好了。
改动如下:
    P369的hibernate.cfg.xml文件的方言,MySQLInnoDBDialect改为MySQLDialect。
问题解决。

提问赏金:3金币
获奖名单 : kongyeeku(3金币)    

你用的哪个版本的MySQL呢?是不是MySQL 5.5 ?
如果是的话,请使用MySQL5InnoDBDialect方言。不要使用MySQLDialect。

MySQL5InnoDBDialect会强制使用InnoDB的存储机制,这种存储机制才能很好的支持事务。

至于程序出错的原因,与代码代码无关!是MySQL版本升级造成的,
MySQL 5.1以前建表时可通过 type=InnoDB指定存储机制。
对应于Hibernate的MySQLInnoDBDialect方言类中有如下方法:
  1.         public String getTableTypeString() {
  2.                 return " type=InnoDB";
  3.         }
复制代码
但到了MySQL 5.5之后,建表时只能通过ENGINE=InnoDB来指定存储机制。
对应于Hibernate的MySQL5InnoDBDialect方言类中有如下方法:
  1.         public String getTableTypeString() {
  2.                 return " ENGINE=InnoDB";
  3.         }
复制代码
生命没有假期!
如果生命只剩下最后一秒,你可会想到我?

TOP

回复 2# kongyeeku


    李老师,太NB了。
什么东西都能研究得如此透彻,连Hibernate源代码的出处都如此熟悉,您真是我的偶像啊。

TOP

回复 2# kongyeeku


    恩,是的,我用的是MySQL5.5的数据库。

TOP

现在我改用MySQL5InnoDBDialect了。
谢谢李老师。

TOP

返回列表