Hibernate 5.2 版本 -> 很多查询方法已弃用?

新手上路,请多包涵

我是休眠的新手。

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

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

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

  1. 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;
        }

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

更新

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

原文由 Chenya Zhang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 597
2 个回答
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;
}

希望能帮助到你。

原文由 Pika 发布,翻译遵循 CC BY-SA 3.0 许可协议

虽然迟到了,但可能值得注意的是重载的 createQuery 方法(完全避免警告):

 public List<Admin> loadAllAdmins() {
    try {
        HibernateUtil.beginTransaction();
        List<Admin> admins = currentSession.createQuery("SELECT admin.firstName, admin.lastName from AdminBean admin", Admin.class).getResultList();
        HibernateUtil.commitTransaction();
        return admins;
    } catch (HibernateException ex) {
        System.out.println("List<AdminBean> loadAllPersons: HibernateException");
        return new ArrayList<>();
    }
}

原文由 sharmaap 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题