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   这样也错的。
两表连接查询,最后出现转换类型出错。。

解决方案 »

  1.   

    这里面.你可以直接拿到PurviewInfo    hql 改成from UserInfo u  where u.id=1   就OK了  想用PurviewInfo  直接user.getPurviewInfo 就出来了.
      

  2.   

    感觉 你对hql理解不正确hql可以理解成把sql对象化了.   select写出来的.应该是对象.而不是具体的属性(或者说是sql中的列)  
      

  3.   

    你这小伙,这条路不通换条路是吧? 那个session关闭问题没解决就想用这个方法来避开是吗?
      

  4.   


    1楼过去看看
    http://topic.csdn.net/u/20100413/09/0d5eb316-8be4-461a-bf99-869a08ec9675.html?88981
      

  5.   

    ...    地址帖错?  如果你的配置文件没有错...按我写的.就OK了.
    属性转成PurviewInfo   当然会出转换类型错
      

  6.   


    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 
      

  7.   

    你的from XXXX的话
    hql语句返回的是XXXX类型的对象
    你在方法里写的是PurviewInfo的返回类型
    这个我虽然不知道是什么
    但是看你写的hql语句
    我就知道
    你的类型错误
    大概是因为你select的跟你return的不一致
    也就是说
    你select的只是两个字段组成的一个Object[]而已
    而你却返回PurviewInfo
    肯定会出现转型的错误问题