我是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()和其他方法…我建议如何替换它们?
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; }
希望能帮助到你。