天天看點

hibernate連接配接SQL2005報錯--對象名....無效

[Microsoft][SQLServer   2005   Driver   for   JDBC][SQLServer]對象名   'blog.admin '   無效

我hibernate.show_sql列印了一下sql語句如下

select
        admin0_.id as id36_,
        admin0_.loginName as loginName36_,
        admin0_.password as password36_,
        admin0_.authority as authority36_,
        admin0_.bigregionid as bigregio5_36_ 
    from
        blog.admin admin0_ 
           

這句話在查詢分析器裡面執行是報錯的,依然是blog.admin對象名無效,檢查了資料庫沒寫錯,表名也沒寫錯

老以為是"[SQLServer]對象名 'blog.admin' 無效" 這裡作怪!資料庫删了又建,建了又删!

真想放棄啊

突然,眼睛一亮,才發覺,真正作怪的可能是

Hibernate: blog.admin admin0_

Hibernate: blog.dbo.admin admin0_

看看它與上面兩句有什麼差別

看出來了吧!少了個dbo,blog是我的資料庫名稱!

解決方法:在XXX.hbm.xml中修改catalog="blog" schema="dbo",我這裡是Admin.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.myplan.ppcdao.Admin" table="admin" catalog="blog" schema="dbo">
     <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="loginName" type="java.lang.String">
            <column name="loginName"/>
        </property>
        <property name="password" type="java.lang.String">
            <column name="password"/>
        </property>
        <property name="authority" type="java.lang.Integer">
            <column name="authority"/>
        </property>
        <property name="bigregionid" type="java.lang.Integer">
            <column name="bigregionid"/>
        </property>
    </class>
</hibernate-mapping>
           

重新啟動資料庫和tomcat,一切OK!