列表()返回什么类型的列表?

时间:2013-11-06 10:58:29

标签: java hibernate

以下查询从用户实体获取用户名。

String hql = "SELECT userName FROM User WHERE email= :user_email";
Query query = session.createQuery(hql);
query.setParameter("user_email", userSearched );

'query.list()'返回什么类型?

它会返回List吗?

5 个答案:

答案 0 :(得分:2)

您的createQuery(hql).list()将返回List并且未输入{{1}}。来自Java Doc

  

将查询结果作为List返回。如果查询在前一行包含多个结果,则结果将在Object []的实例中返回。

答案 1 :(得分:2)

实际上,这取决于您使用的查询类型

据我所知,它将返回两种类型的列表

  1. List<bean>

    • 包含表的整个数据记录,当您使用createQuery('from table').list()时返回此列表,因为您从表中检索所有列记录。
  2. Object[]

    • 当您指定特定列名称或createQuery('select column1,column2 from table').list()之类的名称时,它将返回object[],此处每列将被检索为object[0],object[1],...

答案 2 :(得分:1)

您可以在查询中指定字段。 该查询将生成一个Object []列表。

您可以使用Mapper将这些映射到对象或通过索引引用它们。

答案 3 :(得分:0)

没有。它将返回List<Object>

来自文档Query#list

public List list()
      throws HibernateException

将查询结果作为List返回。如果查询在前一行包含多个结果,则结果将在Object []的实例中返回。

因此,下面的代码将返回Object列表。

String hql = "SELECT userName FROM User WHERE email='" + userSearched + "'";
List<Object> usersList = sess.createQuery(hql).list();  

您可以输入强制转换来创建ArrayList<User>

String hql = "FROM User WHERE email='" + userSearched + "'"; //changed the query
ArrayList<User> usersList = (ArrayList<User>) sess.createQuery(hql).list();  

不相关

我建议使用Query#setParameter来设置参数。

String hql = "FROM User WHERE email = :userSearched";
ArrayList<User> usersList = (ArrayList<User>) sess.createQuery(hql).setParameter("userSearched",userSearched).list(); 

答案 4 :(得分:0)

createQuery将返回List接口类型的对象,即仅返回List。在您的情况下,因为您知道它将是可以显式转换为List

的User对象列表