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

Java list()返回什么类型的列表?,java,hibernate,Java,Hibernate,以下查询从用户实体获取用户名 String hql = "SELECT userName FROM User WHERE email= :user_email"; Query query = session.createQuery(hql); query.setParameter("user_email", userSearched ); “query.list()”返回什么类型 它将返回列表吗?您的createQuery(hql).List()将返回List及其未键入的内容。从 以列表形式返

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

String hql = "SELECT userName FROM User WHERE email= :user_email";
Query query = session.createQuery(hql);
query.setParameter("user_email", userSearched );
“query.list()”返回什么类型

它将返回列表吗?

您的
createQuery(hql).List()
将返回
List
及其未键入的内容。从

以列表形式返回查询结果。如果查询包含多个结果前置行,则结果将在对象[]的实例中返回


否。它将返回
列表

来自文档

以列表形式返回查询结果。如果查询包含多个结果前置行,则结果将在对象[]的实例中返回

所以,下面的代码将返回对象列表

String hql = "SELECT userName FROM User WHERE email='" + userSearched + "'";
List<Object> usersList = sess.createQuery(hql).list();  
String hql=“从用户中选择用户名,其中电子邮件=”+userSearched+”;
List usersList=sess.createQuery(hql.List();
您可以键入cast来创建

String hql=“来自用户,其中电子邮件=”+userSearched+”//更改了查询
ArrayList usersList=(ArrayList)sess.createQuery(hql.list();

不相关

我建议使用设置参数

String hql = "FROM User WHERE email = :userSearched";
ArrayList<User> usersList = (ArrayList<User>) sess.createQuery(hql).setParameter("userSearched",userSearched).list(); 
String hql=“来自用户,其中电子邮件=:userSearched”;
ArrayList usersList=(ArrayList)sess.createQuery(hql).setParameter(“userSearched”,userSearched).list();

您可以在查询中指定字段。 查询将生成对象[]的列表


您可以使用映射器将这些映射到对象或按索引引用它们。

createQuery将返回列表接口类型的对象,即仅列表。在您的情况下,因为您知道可以显式地将用户对象列表转换为列表,所以实际上这取决于您使用的查询类型

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

  • 列表

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

    • 当您指定一个或多个特定的列名,如
      createQuery('select column1,column2 from table').list()
      ,它将返回
      object[]
      ,在这里,每一列都将作为
      object[0]、object[1]、…
      进行检索

  • 你为什么不试试呢?好吧,你为什么不试试,让我们知道,因为似乎有相互矛盾的意见。根据dsvander或Sumit Singh的回答,我猜你不会得到一个列表,但会猜测一个列表。小心SQL注入。你确定吗?用户正在选择字段。我不希望从中得到一个列表,但更可能是一个列表:“从用户选择用户名”列表中的对象将是字符串@你需要输入cast to(列表)。请参见您的文档中的选择HQL中的字段
    String hql = "FROM User WHERE email='" + userSearched + "'"; //changed the query
    ArrayList<User> usersList = (ArrayList<User>) sess.createQuery(hql).list();  
    
    String hql = "FROM User WHERE email = :userSearched";
    ArrayList<User> usersList = (ArrayList<User>) sess.createQuery(hql).setParameter("userSearched",userSearched).list();