Hibernate问题:QuerySyntaxError: User is not mapped,帮帮忙吧

shyongfu 2007-05-31 01:20:33
郁闷啊,运行Hibernate应用程序出现了一个怪问题:应用程序在Jbuilder2006中运行正常,但是打包发布到Tomcat5.5后却在登录验证时出现User is not mapped问题(测试后也发现不能映射其他对象),验证代码如下:

//在默认构造函数中已进行Session,Transaction等初始化,Transaction已开始
//整个应用程序在Jbuilder2006中运行正常,但打包发布在Tomcat5.5中运行到
//query = s.createQuery(sql);处就报错
public boolean checkLogin(User user)
{
try
{
String sql = "from User u where u.userName='" +user.getUserName()+"'";
ps.println(sql) ;
query = s.createQuery(sql); //报错,产生User is not mapped异常
User myUser=(User)query.uniqueResult();
if(myUser!=null)
{
if (myUser.getUserPwd()!=null)
return myUser.getUserPwd().equals(user.getUserPwd());
else
return user.getUserPwd()==null;
}
}
catch (Exception e)
{
System.out.println("select User Error:"+e.getMessage());
e.printStackTrace();
}
return false;
}

hibernate.cfg.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=MyData</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="hibernate.show_sql" >true</property>
<property name="current_session_context_class">thread</property>
<mapping resource="User.hbm.xml"/>
<mapping resource="CDDate.hbm.xml"/>
</session-factory>
</hibernate-configuration>

User.hbm.xml如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="com.wang.module.User" table="admin">
<id name="userId" column="userId" unsaved-value="0">
<generator class="native"/>
</id>
<property name="userName" column="userName" not-null="false"/>
<property name="userPwd" column="userPwd" not-null="false"/>
</class>
</hibernate-mapping>

异常如下:
org.hibernate.hql.ast.QuerySyntaxError: User is not mapped. [from User u where u.userName='admin']
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:63)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:196)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:425)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:880)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:830)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:603)
at com.wang.business.BusinessManage.checkLogin(BusinessManage.java:49)
at webapp.LoginAction.execute(LoginAction.java:22)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at MyFilter.doFilter(MyFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: User is not mapped.
at org.hibernate.hql.ast.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:85)
at org.hibernate.hql.ast.FromElementFactory.addFromElement(FromElementFactory.java:77)
at org.hibernate.hql.ast.FromClause.addFromElement(FromClause.java:67)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:217)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:2830)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2719)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:513)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:371)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
... 32 more
...全文
4036 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
。。。。。。。。。。。。我也遇到这个问题,,,不过我的问题是:用ant编译打包发布ejb到jboss5.0就报错,如果是myeclipse编译打包发布就没有问题。。。。。
chengchao1234 2012-05-24
  • 打赏
  • 举报
回复
冲突你个妹,坑爹的....
jiemengjie 2011-07-28
  • 打赏
  • 举报
回复
骗子!!!!!!!!!!!!!!
一翁 2011-04-26
  • 打赏
  • 举报
回复
\-[QUERY] 'query'
\-[SELECT_FROM] 'SELECT_FROM'
\-[FROM] 'from'
\-[RANGE] 'RANGE'
\-[IDENT] 'user_hibernate'

2011-04-26 15:54:04,099 {ABSOLUTE} =>DEBUG ErrorCounter:68 - throwQueryException() : no errors
2011-04-26 15:54:04,146 {ABSOLUTE} =>DEBUG HqlSqlBaseWalker:111 - select << begin [level=1, statement=select]
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: user_hibernate is not mapped [from user_hibernate ]
这是为什么?
wf_0817 2009-12-28
  • 打赏
  • 举报
回复
hql 语句中的条件语句需要跟 实体类 中的字段相同,字母大小写都要相同。
阿哪儿罕 2009-01-19
  • 打赏
  • 举报
回复
搞定了,是日志包commons-loging.jar冲突问题引起的???

怎么搞定的都没有写~萨嘛~写出来!
lxwzhj 2007-06-13
  • 打赏
  • 举报
回复
how did u do it? could u write your solution?? Many many thanks. I also sent u a message. :)
shyongfu 2007-06-11
  • 打赏
  • 举报
回复
搞定了,是日志包commons-loging.jar冲突问题引起的
shyongfu 2007-06-01
  • 打赏
  • 举报
回复
看来只有看日志了,
可log4j.properties放在classes下却看不到输出日志,那在tomcat中怎样配置hibernate的日志输出,log4j.properties与log4j包应放在哪里呢。
shyongfu 2007-06-01
  • 打赏
  • 举报
回复
可是User.hbm.xml,CDDate.hbm.xml与hibernate.cfg.xml均在WEB-INF/classes下,我把sql换成sql="from CDDate";也报类似找不到映射对象的错误,太郁闷了。
可在jbuilder中一切正常,打包成war后我还特意检查了相关映射文件及配置文件位置,可就是在
发布到tomcat中运行报错。
很奇怪
li_d_s 2007-05-31
  • 打赏
  • 举报
回复
估计是你的User.hbm.xml放的不是地方,如果是和User.java在一起,应该是<mapping resource="com/wang/module/User.hbm.xml"/>,如果不加路径,那得和hibernate.cfg.xml放一起了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧