当前位置: 首页 > 面试题库 >

Hibernate的Transformers.aliasToBean()方法

司空祯
2023-03-14
问题内容

Query query = getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(
“select proj_employee.employee_no as employeeNo, …
.setResultTransformer(Transformers.aliasToBean(User.class));

在User.class内部,属性employeeNo是否需要大写?

private String EMPLOYEENO; 
//get/set for EMPLOYEENO

如果我将更EMPLOYEENO改为 小写字母 ,将无法使用。谁能解释为什么变量名必须全为大写字母?


问题答案:

参见Hibernate
3.2:HQL和SQL的Transformers
博客文章:

SQL变形金刚

使用本机sql返回非实体bean或Map通常比basic更为有用Object[]。使用结果转换器,现在成为可能。

>     List resultWithAliasedBean = s.createSQLQuery(
>       "SELECT st.name as studentName, co.description as courseDescription "
> +
>       "FROM Enrolment e " +
>       "INNER JOIN Student st on e.studentId=st.studentId " +
>       "INNER JOIN Course co on e.courseCode=co.courseCode")
>       .addScalar("studentName")
>       .addScalar("courseDescription")
>       .setResultTransformer( Transformers.aliasToBean(StudentDTO.class))
>       .list();
>  
>     StudentDTO dto =(StudentDTO) resultWithAliasedBean.get(0);

提示:addScalar()HSQLDB要求调用以使其与属性名称匹配,因为它以全大写形式返回列名称(例如“
STUDENTNAME”)。这也可以通过自定义的转换器来解决,该转换器搜索属性名称而不是使用完全匹配-
也许我们应该提供一种fuzzyAliasToBean()方法;)

也许您遇到的情况与技巧中所述的情况相同,在这种情况下,您应该尝试向添加呼叫addScalar()



 类似资料:
  • 问题内容: 我接下来还有几粒豆: 我正在尝试执行下一个Hibernate查询: 问题: 我了解Hibernate正在寻找类似的东西: 代替: 关于如何在不创建新bean的情况下解决此问题的想法? 谢谢! 问题答案: 我写了一个ResultTransformer可以解决您的问题。它的名称是AliasToBeanNestedResultTransformer,请在github上查看。

  • 问题内容: 我正在尝试通过加入实体类来创建BO 我得到100个空BO,即所有属性均为null我的BO如下 ..... 当我删除aliasToBean行并遍历Object []时,我可以看到已获取正确的值,请指导我… 问题答案: 尝试显式地对项目进行别名化,以匹配Bean中的字段名称,如下所示:

  • 问题内容: 对于像 制作视频的人相信 在许多情况下,冬眠过大 基本的sql是一种很好的语言,它可以将很多冬眠抽象化 我想听听他们如何比较,以及每个人的优缺点。 问题答案: 在这里,您可以找到Java ORM和持久性解决方案的详尽列表。并非所有以下Hibernate / JPA方法都遵循,其中某些方法在设计上相当容易。 当然,该站点上没有列出解决方案,例如带有模板的Spring JDBC等 。对于需

  • 问题内容: 根据此链接,没有提及支持4.2hibernate的derby方言。 Hibernate不支持Apache Derby吗? 问题答案: 如果您查看javadoc,则还有更多方言。截至对此问题进行最新更新时,它们是: (已弃用,请参见HHH-6073), , 和 。 对于10.7之后的Derby版本,假设没有添加新的Derby方言类,则该方言是最合适的。(但是,如果发生这种情况,建议选择小

  • 问题内容: 不推荐使用此调用: 在源文件中,我可以看到: 但是我不明白我必须使用哪种方法代替。 问题答案: 您可以在Hibernate 5.2 +中使用以下接口:

  • 1. 前言 本节课程聊聊如何使用 Session 完成基本数据操作。通过本课程,你将学习到: 如何实现查询; 如何实现保存和更新。 2. 基本数据操作方法 Session 中提供了很多方法,协助开发者快速完成基本的增加、删除、修改、查询(CRUD) 等基本数据操作。 2.1 查询 Session 提供了 2 个语义很明确的查询方法: get() 方法; load() 方法。 有选择,就会有比较。但