org.hibernate.exception.SQLGrammarException: could not execute statement
Usere.hbm.xml(反向生成的)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="cn.zeng.po.User" table="t_user" catalog="1410818077">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="assigned" />
</id>
<property name="loginName" type="java.lang.String">
<column name="loginName" />
</property>
<property name="loginPwd" type="java.lang.String">
<column name="loginPwd" />
</property>
<property name="username" type="java.lang.String">
<column name="username" />
</property>
<property name="idnumber" type="java.lang.String">
<column name="idnumber" length="11" />
</property>
<property name="gender" type="java.lang.String">
<column name="gender" />
</property>
<property name="age" type="java.lang.Integer">
<column name="age" />
</property>
<property name="phone" type="java.lang.Integer">
<column name="phone" />
</property>
<property name="address" type="java.lang.String">
<column name="address" />
</property>
<property name="job" type="java.lang.String">
<column name="job" />
</property>
</class>
</hibernate-mapping>
删除catalog="1410818077"
我们在用MyEclipse根据数据库的表生成映射文件*.hbm.xml和POJO类的时候,在映射文件中会有schema,catalog这些属性生成,这两个属性就是在hibernate查表中的数据时,会附加在表名前面的数据库名.
这个时候问题来了,当我们更换数据库,修改hibernate的url里面的数据库名时,hibernate还是会按照catalog的属性值取查,这个时候我们需要一个个的修改这些映射文件的catalog属性.
所以推荐做法是:
删除这些属性,然后在hibernate的配置文件中加上hibernate.default_catalog=" 数据库名",hibernate.default_schema="指定的用户名 一般为dbo";这就可以灵活的更换数据库了;