我正在使用Java和Hibernate开发一个应用程序。
现在,有一个表Empdata,让我们说很多列中的两个是uid(主键)和努力。
现在使用Hibernate,我想为特定的uid提取工作量。
我将如何使用Hibernate?
答案 0 :(得分:4)
创建一个以uid
为参数并返回effort
。
public Effort getEffort(Integer uid){
Query query = session.createQuery("SELECT e.effort FROM Empdata e WHERE e.uid=:uid");
query.setParameter("uid", uid);
return query.uniqueResult();
}
我在此假设effort is of type Effort
和uid is of type Integer
答案 1 :(得分:3)
在HQL中,您可以使用list()函数获取包含结果行的Object []数组列表:
Query query = session.createQuery("select e.uid from Empdata e");
List<Object[]> rows = query.list();
返回数组中的1-st元素将是id,second-name。
for (Object[] row: rows) {
System.out.println(" ------------------- ");
System.out.println("id: " + row[0]);
}
编辑:另一个问题的另一个答案:
String hql = "from Empdata where firstname= :fn";
Query query = session.createQuery(hql);
query.setParameter("fn", "Saad");
query.setMaxResults(1);
Effort ef = (Effort) query.uniqueResult();
答案 2 :(得分:2)
使用uniqueResult()可以获取单个对象。这里是单行Java语句。
HQ:-它应包含Empdata作为实体类
public Effort getEffort(int uid){
return session.createQuery("SELECT e.effort FROM Empdata e WHERE e.uid=:uid").setParameter("uid", uid).uniqueResult();
}
SQL:-无需实体类
public Effort getEffort(int uid){
return session.createSQLQuery("SELECT column1 FROM EMP e WHERE e.uid=:uid").setParameter("uid", uid).uniqueResult();
}