zoukankan      html  css  js  c++  java
  • Java EE 之 Hibernate异常总结【4】org.hibernate.exception.SQLGrammarException: could not execute statement

    本质原因:配置的Java Bean,由Hibernate自动产生的SQL语句中有语法错误

    原因如下:

      情况1.存在字段名/表名与数据库关键字冲突

      情况2.MySQL5.0以后与MySQL5.0以前事务引擎InnoDB配置微妙不同

    //MySQL 5.0之后【engine = InnoDB】
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    
    //NySQL 5.0之前【type = InnoDB】
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

      情况3:@Column的注解中的属性columnDefinition出问题

    //正确
    columnDefinition="int comment '房间可住人数上限'"
    
    //错误:原因:如果不加字段属性,hibernate反射时,会将comment视为字段名,将发生关键字冲突错误。
    columnDefinition="comment '房间可住人数上限'"
    

      情况4:数据类型转换错误

  • 相关阅读:
    复制表结构及数据
    mysql 字段名是关键字 报错
    mysql 截取字符串
    《官方资料》 例如:string 函数 、分组函数
    mysql event 入门
    Spring国际化
    Python学习记录
    精选股文
    为VS定制一个自己的代码生成器
    房产常识
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7804712.html
Copyright © 2011-2022 走看看