Зачем использовать addcalar?

У меня есть запрос на родном sql, что-то вроде:

SQLQuery query = session.createSQLQuery("select emp_id, emp_name, emp_salary from Employee");

Результат запроса может быть использован для установки объекта сотрудника. В аналогичных строках у меня есть тот же запрос с добавлением addcalar(entity_colname).

query = session.createSQLQuery("select emp_id, emp_name, emp_salary from Employee")
        .addScalar("emp_id", new LongType())
        .addScalar("emp_name", new StringType())
        .addScalar("emp_salary", new DoubleType());

здесь также мы должны получить результат аналогичным образом, тогда в чем преимущество использования addcalar?

С уважением, Джей

1 ответ

Вам не нужно использовать addScalar, если вы отображаете ответ на DTO:

public class EmployeeDTO {
    private final Long id;
    private final String name;
    private final Double salary;

    public EmployeeDTO(Long id, String name, Double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Double getSalary() {
        return salary;
    }
}

Запрос становится:

List<EmployeeDTO> = (List<EmployeeDTO>) session.createSQLQuery(
    "select new my.package.EmployeeDTO(emp_id, emp_name, emp_salary) from Employee")
.list();
Другие вопросы по тегам