从单行Hibernate中选择一个列

时间:2017-01-03 08:27:55

标签: java hibernate

我正在使用Java和Hibernate开发一个应用程序。

现在,有一个表Empdata,让我们说很多列中的两个是uid(主键)和努力。

现在使用Hibernate,我想为特定的uid提取工作量。

我将如何使用Hibernate?

3 个答案:

答案 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 Effortuid 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();
}