SpringData JPA 使用中遇到的一些错误

根据实体类为MySQL数据库自动创建表

运行时报错:

org.springframework.dao.InvalidDataAccessResourceUsageException: 
error performing isolated work; SQL [n/a]; 
nested exception is org.hibernate.exception.SQLGrammarException: 
error performing isolated work
....
Caused by: org.hibernate.exception.SQLGrammarException: error performing isolated work
....
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
Table 'XXXX' doesn't exist
....
org.springframework.transaction.UnexpectedRollbackException: 
Transaction silently rolled back because it has been marked as rollback-only

一种可能的原因:
applicationContext.xml

<!--JPA 的供应商适配器-->
<property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <!-- generateDdl 是否自动创建数据表
             database 指定数据库类型
             databasePlatform  数据库方言,支持数据库特有的语法
             showSql  是否显示sql
         -->
        <property name="generateDdl" value="true"/>
        <property name="database" value="MYSQL"/>
        <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="showSql" value="true"/>
    </bean>
</property>

本机MySQL5.7,
在上面面配置中的 databasePlatform 属性的值 org.hibernate.dialect.MySQLDialect 不支持MySQL5.7
MySQL5.7以上的版本应该使用 org.hibernate.dialect.MySQL57Dialect 或者 org.hibernate.dialect.MySQL5Dialect
同理MySQL8.0 以上版本应该使用 org.hibernate.dialect.MySQL8Dialect

扩展:

继承关系从上到下为:

ConversionContext 接口
	-->Dialect  抽象类
		--> MySQLDialect 继承类
	 		--> MySQL5Dialect  继承类
	  			--> MySQL55Dialect  继承类
	   				--> MySQL57Dialect 继承类
	   					--> MySQL8Dialect  继承类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值