询问一个hibernateTemplate的简单问题

danbomingli_88 2014-01-23 04:21:34
我的HQL语句是这样的

select username2,realname from Friends f,Users u where f.username1=? and f.username2=u.username order by u.username asc", username1

但我这样用是错误的:(本身的语句没有问题,我转为sql语句,在sql server中运行正确)

List<String[]> list = null;
list = hibernateTemplate.find("select username2,realname from Friends f,Users u where f.username1=? and f.username2=u.username order by u.username asc", username1);

问题应该就在于hibernateTemplate.find的返回值类型了。

应该是什么呢?怎么写?


Struts Problem Report

Struts has detected an unhandled exception:

Messages:
No data type for node: org.hibernate.hql.ast.tree.IdentNode +-[IDENT] IdentNode: 'username2' {originalText=username2}
File: org/hibernate/hql/ast/tree/SelectClause.java
Line number: 156
Stacktraces

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode +-[IDENT] IdentNode: 'username2' {originalText=username2}
org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:156)
org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:852)
org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:640)
org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:685)
org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101)
org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:914)
org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:1)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:908)


……………………略
...全文
154 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
danbomingli_88 2014-02-05
  • 打赏
  • 举报
回复
引用 9 楼 fw347969680 的回复:
[quote=引用 8 楼 danbomingli_88 的回复:] 虽然5楼没帮上忙,但还是给分吧。结贴
谢谢,你select语句改好后就可以了吗?返回的List是怎么样的?[/quote] 返回的就是List<object>然后转型为string就行了
fw347969680 2014-01-24
  • 打赏
  • 举报
回复
引用 8 楼 danbomingli_88 的回复:
虽然5楼没帮上忙,但还是给分吧。结贴
谢谢,你select语句改好后就可以了吗?返回的List是怎么样的?
danbomingli_88 2014-01-23
  • 打赏
  • 举报
回复
虽然5楼没帮上忙,但还是给分吧。结贴
danbomingli_88 2014-01-23
  • 打赏
  • 举报
回复
解决了 select后面应该是f.username2 u .realname
danbomingli_88 2014-01-23
  • 打赏
  • 举报
回复
引用 5 楼 fw347969680 的回复:
[quote=引用 4 楼 danbomingli_88 的回复:] 肯定是find返回类型不对的问题。我试过其他find语句,返回对象都没有问题
你要查询出的数据要分别显示两个表中的信息的话,这个很麻烦,新建一个实体类,实体类的属性包含要显示数据的字段,然后只能按照原始的数据库连接读取数据,一个个的赋值,添加到List中。参考,http://maskainv.iteye.com/blog/505822 [/quote] 这个我懂。但这个要求确实特殊,必须这么做。
fw347969680 2014-01-23
  • 打赏
  • 举报
回复
引用 4 楼 danbomingli_88 的回复:
肯定是find返回类型不对的问题。我试过其他find语句,返回对象都没有问题
你要查询出的数据要分别显示两个表中的信息的话,这个很麻烦,新建一个实体类,实体类的属性包含要显示数据的字段,然后只能按照原始的数据库连接读取数据,一个个的赋值,添加到List中。参考,http://maskainv.iteye.com/blog/505822
danbomingli_88 2014-01-23
  • 打赏
  • 举报
回复
肯定是find返回类型不对的问题。我试过其他find语句,返回对象都没有问题
danbomingli_88 2014-01-23
  • 打赏
  • 举报
回复
引用 1 楼 fw347969680 的回复:
hibernateTemplate.find不是这么用的。hql里不应该使用表名和列名,应该是用你的类名和字段名。
这就是我的 映射类的类名和字段名 Friends 里的就有username1 username2两个变量 Users里就有username realname 俩变量
fw347969680 2014-01-23
  • 打赏
  • 举报
回复
引用 1 楼 fw347969680 的回复:
hibernateTemplate.find不是这么用的。hql里不应该使用表名和列名,应该是用你的类名和字段名。
搞错了。Friends和Users这两个类的属性有哪些?
fw347969680 2014-01-23
  • 打赏
  • 举报
回复
hibernateTemplate.find不是这么用的。hql里不应该使用表名和列名,应该是用你的类名和字段名。

67,512

社区成员

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

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