两表连接hql语句问题,类型转换出错

WoodLikeWater 2010-04-13 09:48:09
Purview 表字段 id,purviewName,purviewStr 单方
UserInfo表 多方

public PurviewInfo getByUserId(int userId) {
return (PurviewInfo)super.getHibernateTemplate().execute(
new HibernateCallback(){
public Object doInHibernate(Session s){
String hql="select p.id,p.purviewName,p.purviewStr from PurviewInfo p,UserInfo u where u.purview.id=p.id and u.id=1";
return s.createQuery(hql).uniqueResult();
}
}
);
}

hql:from PurviewInfo p,UserInfo u where u.purview.id=p.id and u.id=1 这样也错的。
两表连接查询,最后出现转换类型出错。。
...全文
199 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dafeicao 2010-04-13
  • 打赏
  • 举报
回复
楼上分析正确
xuhesheng 2010-04-13
  • 打赏
  • 举报
回复
你的from XXXX的话
hql语句返回的是XXXX类型的对象
你在方法里写的是PurviewInfo的返回类型
这个我虽然不知道是什么
但是看你写的hql语句
我就知道
你的类型错误
大概是因为你select的跟你return的不一致
也就是说
你select的只是两个字段组成的一个Object[]而已
而你却返回PurviewInfo
肯定会出现转型的错误问题
daokun66 2010-04-13
  • 打赏
  • 举报
回复

public PurviewInfo getByUserId(int userId) {
return (PurviewInfo)super.getHibernateTemplate().execute(
new HibernateCallback(){
public Object doInHibernate(Session s){
String hql=" from UserInfo u join fetch u.purviewInfo where u.id="+userId;
return ((UserInfo)(s.createQuery(hql).uniqueResult())).getPurviewInfo();
}
}
);
}





是先根据userId得到userInfo ,然后再userInfo里getPurviewInfo
dafeicao 2010-04-13
  • 打赏
  • 举报
回复
... 地址帖错?

如果你的配置文件没有错...按我写的.就OK了.
属性转成PurviewInfo 当然会出转换类型错
WoodLikeWater 2010-04-13
  • 打赏
  • 举报
回复
回4楼的,我想把两种我不知道的问题都解决了。。
再考虑那种方法更好,项目中就选择好的方法。
没你想象的那么单纯。
WoodLikeWater 2010-04-13
  • 打赏
  • 举报
回复
。。。。。。
1楼过去看看
http://topic.csdn.net/u/20100413/09/0d5eb316-8be4-461a-bf99-869a08ec9675.html?88981
长公子冰 2010-04-13
  • 打赏
  • 举报
回复
你这小伙,这条路不通换条路是吧? 那个session关闭问题没解决就想用这个方法来避开是吗?
dafeicao 2010-04-13
  • 打赏
  • 举报
回复
感觉 你对hql理解不正确

hql可以理解成把sql对象化了. select写出来的.应该是对象.而不是具体的属性(或者说是sql中的列)
bukuai009 2010-04-13
  • 打赏
  • 举报
回复
up up up
dafeicao 2010-04-13
  • 打赏
  • 举报
回复
这里面.你可以直接拿到PurviewInfo

hql 改成from UserInfo u where u.id=1 就OK了 想用PurviewInfo 直接user.getPurviewInfo 就出来了.

67,512

社区成员

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

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