注册 登录
编程论坛 J2EE论坛

大家帮我看看hibernate里的findById方法

wangxin016 发布于 2008-08-07 11:36, 4270 次点击
谢谢大家,小弟我还有个问题:就是查询的时候
public static void main(String[] args) {
        UinfoDAO dao = new UinfoDAO();
        Uinfo info = dao.findById(new Long(1));
        System.out.println("Sign is :"+info.getSign());
        dao.getSession().close();
}
只有红色的findById方法返回的是我的Uinfo类型
我要用其他的findBy...方法。比如我想用Email查询,就要用到findByEmail()。可是他返回的是List类型,怎么办啊?我试了试下面的把List转换成我的Uinfo类型,可是报java.lang.ClassCastException应该怎么转换类型啊
public static void main(String[] args) {
        UinfoDAO dao = new UinfoDAO();
        Object obj = (Object)"wx";
        try{
        Uinfo info = (Uinfo)dao.findByUname(obj);
        System.out.println("Sign is :"+info.getSign());
        }catch(HibernateException e){
            System.out.println("Entity retrieval failed.");
            e.printStackTrace();
        }finally{
            try{
                dao.getSession().close();
            }catch(Exception e){
                //do nothing;
            }
        }
}
请大家看看,帮帮我~
4 回复
#2
sunzh052008-08-07 17:01
Email是不是唯一的?
不行就自己写dao
俺也是菜鸟,不对别骂
#3
高寒2008-08-21 11:24
这样转型是不行的,其实返回的list里面存的就是多个对象,你可以把list迭代出来,迭代出来的每一个元素就是一个对象,如果用范型就不用转型,如果不是范型,需要强转之后在取得对象中的属性即可
#4
phoenixboy2008-08-21 19:38
楼上正解!!
#5
roemin2010-01-24 19:32
public static void main(String[] args) {
        UinfoDAO dao = new UinfoDAO();
        Object obj = (Object)"wx";
        try{
        Uinfo info = (Uinfo)dao.findByUname(obj).get(0);
        System.out.println("Sign is :"+info.getSign());
        }catch(HibernateException e){
            System.out.println("Entity retrieval failed.");
            e.printStackTrace();
        }finally{
            try{
                dao.getSession().close();
            }catch(Exception e){
                //do nothing;
            }
        }
}
1