Получить одно поле, а не целое ПОЖО в спящем режиме - PullRequest
7 голосов
/ 03 июня 2011

У меня есть вопрос относительно режима гибернации,

Таблица: Employee_Master

Идентификационный номер Имя Varchar Зарплатный длинный

POJO: EmployeeMaster.java

public class EmployeeMaster {

private int id ;
private String name;
private long salary;

//... all field s getter/ setter  methods


}

Теперь я хочу получить только имя из такого идентификатора.

SQL-запрос, например:

select name from employee_master where id = 10;

Но как мы можем достичь в спящем режиме того же самого?

session.createQuery("from EmployeeMaster empMaster where empMaster.id = 10");

Это решение я знаю, но оно вернет весь список pojo.Но мне нужно только это имя поля, что мне делать?

Ответы [ 5 ]

10 голосов
/ 03 июня 2011

В HQL вы можете просто запросить одно поле:

String employeeName = session.createQuery("select empMaster.name from EmployeeMaster empMaster where empMaster.id = :id").setInteger("id",10).uniqueResult();
4 голосов
/ 03 июня 2011
2 голосов
/ 16 июля 2013

Это работает для меня

String orderNo = (String) getCurrentSession().createQuery("select orderNumber from Asset where id = :id").setParameter("id", assetId).uniqueResult();

setInteger не работает для меня, тогда я использовал setParameter.

1 голос
/ 29 ноября 2017
// to retrieve a single row or record
String hqlSelectRow ="from Employee where employeeId =:empId";
Query query1 = session.createQuery(hqlSelectRow);
Employee emp = (Employee) query1.setParameter("empId",111).uniqueResult();
System.out.println("employee id : "+ emp.getEmployeeId() );
System.out.println("employee name : "+ emp.getEmployeeName() );
System.out.println("employee salary : "+ emp.getEmployeeSalary());
0 голосов
/ 03 июня 2011

Вы пометили nhibernate, но ваша ссылка на pojo заставляет меня предполагать, что вы пишете на Java. Вы используете JPA? Если это так, рассмотрите возможность использования собственного запроса ...

EntityManager em ....
Query q = em.createNativeQuery("select e.name from employee_master e where e.id = ?");
q.setParamter(1, <employee id>);
String name = (String) q.getSingleResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...