gpt4 book ai didi

java - Hibernate 5.2 版本 -> 许多查询方法弃用?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:53 25 4
gpt4 key购买 nike

我是 Hibernate 新手。

我正在尝试获取所有管理员的名字和姓氏列表。

我的以下代码中有两个警告。我已经尝试在网上搜索了很多。

1) 查询是原始类型。对通用类型查询的引用应该被参数化。

2) 不推荐使用 Query 类型的方法 list()。

public List<Object> loadAllAdmins() {
List<Object> allAdmins = new ArrayList<Object>();
try {
HibernateUtil.beginTransaction();

Query q = currentSession.createQuery("SELECT admin.firstName, admin.lastName from AdminBean admin");

allAdmins= q.list();

HibernateUtil.commitTransaction();
} catch (HibernateException ex) {
System.out.println("List<AdminBean> loadAllPersons: HibernateException");
}
return allAdmins;
}

但是我在整个网络上都看到了这样的示例代码。我该如何解决这两个问题?

更新

我只是尝试按照建议使用 Criteria。它还说 list() 方法已弃用 Criteria...似乎很多方法都已弃用 Query 和 Criteria,包括 uniqueResult() 和其他方法...我应该如何替换它们有什么建议吗?

最佳答案

public List<Admin> getAdmins() {
List<Admin> AdminList = new ArrayList<Admin>();
Session session = factory.openSession();
for (Object oneObject : session.createQuery("FROM Admin").getResultList()) {
AdminList.add((Admin)oneObject);
}
session.close();
return AdminList;
}

警告来自“类型推断”。

我遇到了类似的问题。但是,我找到了一个没有“SuppressWarnings”的解决方案。


最近,我发现了一种无需类型推断即可编写相同内容的较短方法。

public List<Admin> getAdmins() {
Session session = factory.openSession();
TypedQuery<Admin> query = session.createQuery("FROM Admin");
List<Admin> result = query.getResultList();
session.close();
return result;
}

希望对您有所帮助。

关于java - Hibernate 5.2 版本 -> 许多查询方法弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460764/

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