Hibernate 使用中异常锦集

环境:

​ mysql:5.7.19

​ Hibernate:5.2.3

Error1

异常:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hibernate.hibernate_sequence' doesn't exist

解决:配置方言为org.hibernate.dialect.MySQL5Dialect

原因:hibernate自动建表出错,但是手动在MySql数据库中建表成功后却能用hibernate对数据库内容进行CRUD操作,很可能原因为dialect方言配置不当。在mysql 5.0版本以后不支持 type=InnoDB 关键字,需要使用 engine=InnoDB,配置方言为:

org.hibernate.dialect.MySQL5Dialect

更改完毕后建表成功

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版本即可

原因:未知

你可能感兴趣的:(Hibernate 使用中异常锦集)