HQL查询中的问题?

用户名

这是一个测试程序。数据库中的表是具有ID和名称作为列的学生。POJO类别是具有ID和名称作为属性的Student

servlet1中使用的HQL查询是:

List<Student> l = ses.createQuery("select s.id, s.name from Student s").list();

        out.println("Database students are as follows:<br/>");
        Iterator it= l.iterator();
        while(it.hasNext())
        {
            Object o[]= (Object[]) it.next();
            out.println("Student id is :"+o[0]);
            out.println("<br/>");
            out.println("Student name is :"+o[1]);
            out.println("<br/>");
        } 

servlet2中的HQL查询是:

List<Student> l=ses.createQuery("from Student").list();
        out.println("Database students are as follows:<br/>");
        Iterator it= l.iterator();
        while(it.hasNext())
        {
            Student s= (Student) it.next();
            out.println("Student id is :"+s.getId());
            out.println("<br/>");
            out.println("Student name is :"+s.getName());
            out.println("<br/>");
        }

在servlet1中,如果我使用Student对象而不是Object类对象,为什么没有从数据库中检索数据呢?反之,一切都很好。

在sevlet2中,如果我使用Object类对象而不是Student对象,为什么没有从数据库中检索数据呢?反之,一切都很好。

马门

您的第一个查询具有多个子句,您不能将其转换为List,因为id和name是不同的类型。因此它将是列表类型。

对于第二个查询,您将返回学生列表,因此您不应将其转换为“对象类型”,然后再次转换为“学生类型”。有关更多信息,请单击此处的链接-https : //weblogs.java.net/blog/2007/04/25/java-persistence-query-return-types

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章