环境:
mysql:5.7.19
Hibernate:5.2.3
Error1
异常:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hibernate.hibernate_sequence' doesn't exist
解决:配置方言为<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
原因:hibernate自动建表出错,但是手动在MySql数据库中建表成功后却能用hibernate对数据库内容进行CRUD操作,很可能原因为dialect方言配置不当。在mysql 5.0版本以后不支持 type=InnoDB 关键字,需要使用 engine=InnoDB,配置方言为:
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
更改完毕后建表成功
Error2
异常:org.hibernate.MappingException: Could not determine type for:
原因及解决:Hibernate 注解 @OneToOne 时候,出现以下错误,经调试,发现在同一个类中,注解要么全部放在字段上,要么全部放在get方法上,不能混合使用!
Error3
异常:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`th`.`cst_linkman`, CONSTRAINT `FKh9yp1nql5227xxcopuxqx2e7q` FOREIGN KEY (`lkm_cust_id`) REFERENCES `cst_customer` (`cust_id`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
原因:使用一对多注解来解决外键问题时,多方实体类添加了外键字段
解决:将多方实体类外键相关字段及get,set方法删除在进行执行问题解决
备注:数据库对应表结构生成时,均不需要对外键进行字段描述,即均不需要添加外键字段,外键字段均有注解进行描述
Error4
异常:Hibernate:5.2.11版本根据数据库实体类无法生成外键
解决:Hibernate版本改为5.2.3版本即可
原因:未知