这是抛出来的提示信息:
HTTP Status 500 - could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
type Exception report
message could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:613) org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
提示是无法进行查询,我们可以把他生成的sql 复制在sql editer中去运行下,你就会发现错误了
很有可能是因为表名 或者字段名 是sql的关键字引起的。
在bean的hbm.xml 文件中给字段 或者 表名加上回避符就可以了。[表名]
附上一段我报错的配置文件,修复正确的:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.shop.bean.Order" table="[Order]" schema="dbo" catalog="Shop" dynamic-insert="true" dynamic-update="true">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="native" />
</id>
<many-to-one name="product" class="com.shop.bean.Product" fetch="select">
<column name="ProductId" not-null="true" />
</many-to-one>
<many-to-one name="user" class="com.shop.bean.User" fetch="select">
<column name="UserId" not-null="true" />
</many-to-one>
<many-to-one name="convey" class="com.shop.bean.Convey" fetch="select">
<column name="ConveyId" not-null="true" />
</many-to-one>
<property name="price" type="java.lang.Double">
<column name="[Price]" scale="4" not-null="true" />
</property>
<property name="count" type="java.lang.Integer">
<column name="[Count]" not-null="true" />
</property>
<property name="money" type="java.lang.Double">
<column name="[Money]" scale="4" not-null="true" />
</property>
<property name="shipments" type="java.lang.Boolean">
<column name="Shipments" />
</property>
<property name="address" type="java.lang.String">
<column name="[Address]" not-null="true" />
</property>
<property name="receive" type="java.lang.Boolean">
<column name="Receive" />
</property>
<property name="addTime" type="java.sql.Timestamp">
<column name="AddTime" length="23" />
</property>
</class>
</hibernate-mapping>