1.MYSQL的数据库引擎中,只有InnoDB和BDB(Berkley DB )包括了对事务处理和外键的支持。如果数据引擎建为MyISAM则rollback无效。
2.而hibernate自动建表的时候语句如下
Hibernate: create table USER ( id integer not null auto_increment, name varchar(255), password varchar(255), primary key (id) ) engine=MyISAM
即engine为myisam模式.此模式并不支持事务处理和外键约束.
3.解决方案
设置dialect属性
注:hibernate5.0之后一定要在MySQL和InnoDBDialect中间加一个 5
<property name="dialect"> org.hibernate.dialect.MySQL5InnoDBDialect</property>
此时运行后台回显的建表语句为:
Hibernate: create table USER ( id integer not null auto_increment, name varchar(255), password varchar(255), primary key (id) ) engine=InnoDB
即engine为InnoDB模式.此模式支持事务处理和外键约束.
注: 具体innodb和MYISAM的区别请查看:http://blog.csdn.net/xifeijian/article/details/20316775
数据库方言:http://blog.csdn.net/jialinqiang/article/details/8679171