小编典典

Hibernate 5.2版本->很多Query方法不赞成使用吗?

hibernate

我是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;
        }

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

更新资料

我只是尝试按照建议使用条件。它还说list()方法不建议使用Criteria
…似乎很多方法都不建议使用Query和Criteria,包括uniqueResult()和其他方法…我建议如何替换它们?


阅读 432

收藏
2020-06-20

共1个答案

小编典典

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

希望能帮助到你。

2020-06-20