您好我正在实施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"/>
它有效,但我必须手动创建表。 可能是什么问题?
答案 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也有帮助。