获取异常:org.hibernate.exception.sqlgrammarexception

时间:2017-09-15 06:36:49

标签: java hibernate

您好我正在实施hibernate,当我尝试插入新记录时获取例外org.hibernate.exception.sqlgrammarexception

我的hibernate.cfg.xml文件:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_db</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">system</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">create</property>
        <mapping class="com.hib.UserDetails"/>
    </session-factory>
</hibernate-configuration>

如果我改变了

<property name="hbm2ddl.auto">update</property>
            <mapping class="com.hib.UserDetails"/>

它有效,但我必须手动创建表。 可能是什么问题?

4 个答案:

答案 0 :(得分:0)

查找抛出SQL / HQL查询的代码段。 在那里你可能会发现一些简单但很难找到的错误,比如错误的拼写命令等等。 这就是为什么sql&#39;语法&#39;例外

答案 1 :(得分:0)

检查映射类“UserDeatails”。

手动创建的表和UserDetails映射类之间存在不匹配。

可能不匹配Column_Names,Id,Constraints ..etc

答案 2 :(得分:0)

检查表中的列名,并与bean中@column批注中的列名匹配。很可能是它的列不匹配。

答案 3 :(得分:0)

您是否可以发布异常的Stacktrace,如果您可以发布将用户添加到数据库的代码,它也会有所帮助。 它可能是Database表的Column名称和声明的变量的问题。

<property name="show_sql">true</property>
<property name="format_sql">true</property>

这些必须生成SQL语句,检查生成的SQL语句中是否存在错误。发布SQL也有帮助。