java 从单行休眠中选择单列

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41439273/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 05:52:39  来源:igfitidea点击:

Select a single column from single Row Hibernate

javahibernate

提问by rkarwayun

I am developing an application using Java and Hibernate.

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

Now, there is a Table Empdata and let's say two among its many columns are uid(primary key) and effort.

现在,有一个表 Empdata,假设它的许多列中有两个是 uid(主键)和努力。

Now using Hibernate, I want to extract effort for a specific uid.

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

How will I do so using Hibernate?

我将如何使用 Hibernate 做到这一点?

回答by AJA

Create a method that takes uidas argument and returns an effort.

创建一个方法,它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();
}

Here I took the assumption that effort is of type Effortand uid is of type Integer

在这里我假设effort is of type Effortuid is of type Integer

回答by Faraz

In HQL you can use list() function to get a list of Object[] array that contains result rows:

在 HQL 中,您可以使用 list() 函数来获取包含结果行的 Object[] 数组列表:

Query query = session.createQuery("select e.uid from Empdata  e");
List<Object[]> rows = query.list();

in returned array 1-st element will be id, second - name.

在返回的数组中,第一个元素将是 id,第二个 - 名称。

for (Object[] row: rows) {
    System.out.println(" ------------------- ");
    System.out.println("id: " + row[0]);        
}

Edit: Another answer to another question:

编辑:另一个问题的另一个答案:

String hql = "from Empdata where firstname= :fn";    
Query query = session.createQuery(hql);
query.setParameter("fn", "Saad");
query.setMaxResults(1);
Effort ef = (Effort) query.uniqueResult(); 

回答by Ibz.Shaikh

using uniqueResult() you can get single object.Here is single line java statement.

使用 uniqueResult() 您可以获得单个对象。这是单行 java 语句。

HQ:- it should contain Empdata as entity class

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:- No entity class required

SQL:- 不需要实体类

public Effort getEffort(int uid){
return session.createSQLQuery("SELECT column1 FROM EMP e WHERE e.uid=:uid").setParameter("uid", uid).uniqueResult();
}