以下查询从用户实体获取用户名。
String hql = "SELECT userName FROM User WHERE email= :user_email";
Query query = session.createQuery(hql);
query.setParameter("user_email", userSearched );
'query.list()'返回什么类型?
它会返回List吗?
答案 0 :(得分:2)
您的createQuery(hql).list()
将返回List
并且未输入{{1}}。来自Java Doc
将查询结果作为List返回。如果查询在前一行包含多个结果,则结果将在Object []的实例中返回。
答案 1 :(得分:2)
实际上,这取决于您使用的查询类型
据我所知,它将返回两种类型的列表
List<bean>
createQuery('from table').list()
时返回此列表,因为您从表中检索所有列记录。 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对象列表