映射文件如下
<hibernate-mapping>
    <class name="org.mes.domain.Users" table="users" schema="dbo">
        <id name="userId" type="java.lang.Long">
            <column name="userId" />
            <generator class="native" />
        </id>
        <property name="userName" type="java.lang.String">
            <column name="userName" length="50" not-null="true" />
        </property>
        <property name="pasword" type="java.lang.String">
            <column name="pasword" length="50" not-null="true" />
        </property>
        <property name="age" type="java.lang.Integer">
            <column name="age" />
        </property>
        <property name="sex" type="java.lang.Integer">
            <column name="sex" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="email" length="50" not-null="true" />
        </property>
        <property name="status" type="java.lang.Integer">
            <column name="status" />
        </property>
        <property name="dj" type="java.lang.Integer">
            <column name="dj" />
        </property>
        <property name="qx" type="java.lang.Integer">
            <column name="qx" />
        </property>
    </class>
</hibernate-mapping>
错误提示如下
Hibernate: select users0_.userId as userId, users0_.userName as userName0_, users0_.pasword as pasword0_, users0_.age as age0_, users0_.sex as sex0_, users0_.email as email0_, users0_.status as status0_, users0_.dj as dj0_, users0_.qx as qx0_ from dbo.users users0_ where users0_.userName=? and users0_.pasword=?
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:59)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java: 96)
at org.hibernate.loader.Loader.list(Loader.java: 77)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.mes.impl.UserDaoImpl.queryLogin(UserDaoImpl.java:18)
at org.mes.action.UserAction.login(UserAction.java:57)
at org.mes.action.UserAction.execute(UserAction.java:41)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.mes.filter.EncodingFilter.doFilter(EncodingFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:2 )
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 1)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: 列名 'userId' 无效。
at net.sourceforge.jtds.jdbc.SqlMessage.toSQLException(SqlMessage.java:392)
at net.sourceforge.jtds.jdbc.SQLWarningChain.addOrReturn(SQLWarningChain.java:91)
at net.sourceforge.jtds.jdbc.Tds.submitProcedure(Tds.java:235)
at net.sourceforge.jtds.jdbc.PreparedStatement_base.submitProcedure(PreparedStatement_base.java:195)
at net.sourceforge.jtds.jdbc.PreparedStatement_base.findOrCreateProcedure(PreparedStatement_base.java:179)
at net.sourceforge.jtds.jdbc.PreparedStatement_base.execute(PreparedStatement_base.java:131)
at net.sourceforge.jtds.jdbc.PreparedStatement_base.executeQuery(PreparedStatement_base.java:262)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java: 93)
... 31 more
请问这是哪里出错了 ??
user<表>
userId     bigint
userName    varchar
pasword     varchar
age  int
sex int
email varchar
status int
dj int
qx int

解决方案 »

  1.   

    Caused by: java.sql.SQLException: 列名 'userId' 无效。 
      

  2.   

    把你的java代码贴出来看看撒
    有时候user表名属于敏感字符
    用jdbc+sql连接时会报user表无效
      

  3.   

    既然用户已经成功建立了那个表,就应该不会有问题。
    难道是楼主的表空间搞错了?在别的表空间中也有这个user表。
    一个用户有它自己的默认表空间,所以也有可能是楼主连接数据库时,使用的用户的默认表空间并不是你认为的那个。
      

  4.   

    数据库sql server,偶没有用过。上面帖子的解释是基于oracle。
      

  5.   

    不能使用user 这个关键字,在oracle中要加上区别符的.