在Hibernate+Spring项目中,如果将MySQL数据库类型设置成为Innodb类型,如果不进行特殊设置的话,就会出现数据无法插入的问题,但是在控制台上,却可以正确地打印出SQL语句。把此SQL复制到DOS下的MySQL控制台上,又可以正常插入,这是个很纳闷的问题。特别是通过DDL用工具生成Hibernate映射文件和POJO代码时(本人用的是MySQL自带的Hibernate Reverse Engineering...)
  DDL代码如下:
   

MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)CREATE TABLE `users` (
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)  `id` 
int(11NOT NULL auto_increment COMMENT '用户ID',
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)  `name` 
varchar(20default NULL COMMENT '昵称',
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)  `password` 
varchar(20default NULL COMMENT '用户密码',
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)  `purwiew` 
int(11default '0' COMMENT '用户权限',
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)  
PRIMARY KEY  (`id`),
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)  
UNIQUE KEY `id` (`id`)
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)) ENGINE
=InnoDB DEFAULT CHARSET=gb2312 COMMENT='用户';
   生成的POJO代码:
   
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)package com.xu.ycoe.pojo;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
}
         生成的DAO:
      
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)package com.xu.ycoe.pojo;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import java.util.Iterator;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import java.util.List;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.apache.commons.logging.Log;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.apache.commons.logging.LogFactory;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.hibernate.LockMode;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.hibernate.Query;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.springframework.context.ApplicationContext;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.springframework.context.support.ClassPathXmlApplicationContext;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
}

  生成的映射文件:
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)<?xml version="1.0"?>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
<!-- 
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)    Mapping file autogenerated by MyEclipse - Hibernate Tools
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
-->
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
<hibernate-mapping>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)    
<class name="com.xu.ycoe.pojo.Users" table="users">
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
<id name="id" type="java.lang.Integer">
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)            
<column name="id" />
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)            
<generator class="increment" />
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
</id>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
<property name="name" type="java.lang.String">
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)            
<column name="name" length="20" />
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
</property>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
<property name="password" type="java.lang.String">
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)            
<column name="password" length="20" />
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
</property>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
<property name="purwiew" type="java.lang.Integer">
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)            
<column name="purwiew" />
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)        
</property>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)    
</class>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)
</hibernate-mapping>
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)

      这些都没什么问题,而对于在之前生成的Spring配置文件或Hibernate配置文件,则有要修改和注意的地方:
首先,我用的是三方连接池,所以配置可能和自动生成的有所区别,但不外乎这几方面:
  1.要注意数据库的dialect。一般为org.hibernate.dialect.MySQLMyISAMDialect或org.hibernate.dialect.MySQLDialect 
             这里要把它改成org.hibernate.dialect.MySQLInnoDBDialect。
  2.添加一行自动提交属性的设置
MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)<prop key="hibernate.connection.autocommit">true</prop>
               (这里是Hibernate3.1的配置,之前版本可能有所出入)
  3.添加测试代码,在UsersDAO类中添加以下代码:
%2

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-07
  • 2021-06-20
  • 2021-06-12
  • 2021-06-15
猜你喜欢
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2022-12-23
  • 2021-10-30
  • 2022-12-23
相关资源
相似解决方案