gpt4 book ai didi

hibernate - HQL 查询从表中获取所有名称

转载 作者:行者123 更新时间:2023-12-04 01:41:08 26 4
gpt4 key购买 nike

我有一个StudentInfo 表,我需要获取表中name 列下的所有name

任何人都可以帮助我纠正以下功能

 @Override
public List<StudentRecord> getAllStudentNames(){

Session session = HibernateUtil.getSessionFactory().openSession();

try {

List<StudentRecord> smrList = new ArrayList<StudentRecord>();

String SQL_QUERY = "select smr.studentName from StudentRecord as smr";
Query query = session.createQuery(SQL_QUERY)

smrList = query.list();



} catch (Exception e) {
e.printStackTrace();

} finally {
session.flush();
session.close();
HibernateUtil.getSessionFactory().close();
}


return smrList
}

最佳答案

你想要名字,而名字是字符串,所以你不需要 List<StudentRecord> ,而是一个 List<String> .

query.list()方法返回的是List,所以不需要新建ArrayList,只需要用方法返回的列表替换即可。

因此您只需要以下内容(遵循 Java 命名约定):

String hql = "select smr.studentName from StudentRecord as smr";
Query query = session.createQuery(hql);
List<String> result = query.list();
return result;

请注意,我将变量命名为 hql ,而不是 sql ,因为 HQL 和 SQL 不是同一种语言,而您在这里使用的是 HQL。如果 StudentRecord 的持久属性,上述查询将起作用类名为 studentName .表名和列名无关,因为 HQL 使用实体进行查询,而不是表。

最后,你不应该捕获异常:它只会隐藏错误。让异常传播给调用者。

看来您缺乏基本的 Java 知识。在使用 Hibernate 这个复杂的框架之前,我会先从简单的问题开始学习 Java。

关于hibernate - HQL 查询从表中获取所有名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com