【Hibernate】mysql版本影响hibernate操作数据库

本文探讨了使用Hibernate创建MySQL表时遇到的问题,特别是在处理外键约束方面。由于使用的Hibernate方言与MySQL版本不匹配,导致无法正确创建外键。文中详细介绍了如何通过调整Hibernate方言来解决这一问题。

问题

        hibernate能实现创建mysql表,但是不能通过关联创建表外键。


原因

        由于使用的mysql版本为5.7.19,而hibernate配置的方言是org.hibernate.dialect.HSQLDialect,这个方言只适合于myql5.0之前版本的方言,而不能全部实现mysql5.0以上版本的命令。

解决

        将hibernate的mysql方言设置为org.hibernate.dialect.MySQL5InnoDBDialect,或者改为通用的org.hibernate.dialect.MySQLDialect(未验证)


总结

         通过上面两张图,也能发现,在mysql5.0版本以上,org.hibernate.dialect.HSQLDialect创建外键是并没有配置外键的具体来源,而org.hibernate.dialect.MySQL5InnoDBDialect的语句中则是指定了具体的外键属性。

         org.hibernate.dialect.HSQLDialect生成外键语句:alter table t_student add constraint FK4B907570A5F18255 foreign key(classesid) references t_classes

          org.hibernate.dialect.HSQLDialect生成外键语句:altertable t_student add index FK4B907570A5F18255 (classesid), add constraintFK4B907570A5F18255 foreign key (classesid) references t_classes (id)


          mysql5.0版本以上,hibernate方言可以建议采用org.hibernate.dialect.MySQL5InnoDBDialect或者org.hibernate.dialect.MySQLDialect。

          mysql5.0版本一下,hibernate方言可以设置org.hibernate.dialect.MySQLDialect或者org.hibernate.dialect.HSQLDialect。

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值