Hibernate createSQLQuery с Transformers.aliasToBean и addScalar - PullRequest
0 голосов
/ 21 марта 2019

Не уверен, что это лучший способ сделать это, так как я не очень хорошо знаком с Hibernate.Допустим, у меня есть сущность EmployeeDAO с полем month__alary, и я хочу знать годовой оклад сотрудника, поэтому я создаю псевдоним поля year_salary.Для обработки этого псевдонима полей я создаю класс Employee для расширения EmployeeDAO.Если я поступаю следующим образом, я могу загружать только поля псевдонимов (надеюсь, мне не нужно добавлять Scalar для полей каждого столбца), каков наилучший способ загрузки полей столбцов и полей псевдонимов одновременно?Обратите внимание, что мой оригинальный sql более сложный, я должен использовать функцию createSQLQuery, ниже приведен только пример.

String sql = "Select e.*, e.monthly_salary*12 as annual_salary from Employee e";
List<Employee> fChk = session.createSQLQuery(sql).create
                    .addScalar("annual_salary", new BigDecimalType())
.setResultTransformer(Transformers.aliasToBean(Employee.class))
                    .list();

1 Ответ

0 голосов
/ 21 марта 2019
Ok, lucky me figure out how to solve it. Create a new Class Employee, inside it has the alias fields and EmployeeDAO obj. Problem solved

String sql = "Select e.*, e.monthly_salary*12 as annual_salary from Employee e";
List<Employee> emp = session.createSQLQuery(sql)
.addEntity("e", EmployeeDAO.class)
.addScalar("annual_salary", new BigDecimalType())
.setResultTransformer(Transformers.aliasToBean(Employee.class))
.list();

---------
public class Employee{
   private EmployeeDAO e;
   private BigDecimal annual_salary;
   ...setter and getter
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...