首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Transformers.aliasToBean和addScalar的Hibernate createSQLQuery

问使用Transformers.aliasToBean和addScalar的Hibernate createSQLQuery
EN

Stack Overflow用户
提问于 2019-03-21 17:05:45
回答 1查看 102关注 0票数 0

因为我不太熟悉Hibernate,所以我不确定做这件事的最好方法是什么。假设我有一个具有字段monthly_salary的实体EmployeeDAO,并且我想知道该雇员的年薪,因此我创建了一个别名字段annual_salary。为了处理这个别名字段,我创建了一个类Employee来扩展EmployeeDAO。如果我这样做,我只能加载别名字段(我希望我不必为每个列字段执行addScalar ),同时加载列字段和别名字段的最佳方法是什么?请注意,我原来的sql比较复杂,我必须使用createSQLQuery函数,下面只是一个例子。

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

发布于 2019-03-21 21:28:22

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55276909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档