首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate的Transformers.aliasToBean()方法

Hibernate的Transformers.aliasToBean()方法
EN

Stack Overflow用户
提问于 2010-03-15 04:33:14
回答 2查看 46.4K关注 0票数 17
代码语言:javascript
复制
 Query query =  getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(
                 "select proj_employee.employee_no as employeeNo, ...
 .setResultTransformer(Transformers.aliasToBean(User.class));

在User.class内部,employeNo需要大写字母吗?

代码语言:javascript
复制
private String EMPLOYEENO; 
//get/set for EMPLOYEENO

如果我把EMPLOYEENO改为小写字母,它就不工作了。有人能解释为什么变量名必须都是大写字母吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-15 04:59:25

请参阅Hibernate 3.2:用于HQL和SQL的转换器博客文章:

SQL变压器 使用本机sql返回非实体bean或Map通常比基本的Object[]更有用。结果变压器现在是可能的。 列表resultWithAliasedBean = s.createSQLQuery(“选择st.name作为studentName,co.description as courseDescription”+“从招生e”+“内加入学生在e.studentId=st.studentId上”+“内连接课程合作在e.courseCode=co.courseCode上”) .addScalar("studentName") .addScalar("courseDescription") .setResultTransformer( Transformers.aliasToBean(StudentDTO.class)) .list();StudentDTO dto =(StudentDTO.class).setResultTransformer(0); 提示: HSQLDB上需要addScalar()调用才能使其匹配属性名,因为它返回所有大写的列名(例如:"STUDENTNAME")。这也可以通过一个自定义转换器来解决,它可以搜索属性名而不是使用完全匹配--也许我们应该提供一个fuzzyAliasToBean()方法;)

可能您所面临的情况与技巧中描述的情况相同,在这种情况下,您应该尝试向addScalar()添加调用。

票数 30
EN

Stack Overflow用户

发布于 2010-06-17 13:24:52

考虑将列别名放在双引号中。Oracle不使用双引号指定大写别名。

代码语言:javascript
复制
Query query =  getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(
                 "select proj_employee.employee_no \"employeeNo\", ...
 .setResultTransformer(Transformers.aliasToBean(User.class))

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2445092

复制
相关文章

相似问题

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