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

具有createSQLQuery的ResultTransformer强制在实体字段中不使用camelCase

彭鸿文
2023-03-14
问题内容

我有一个SQL查询,如下所示:

List<Employee> employees = getCurrentSession()
                    .createSQLQuery(
                            "select"
                                    + e.id as id,e.first_name as firstName,e.password as password
                                    + "from employee e,employee_role er,role r where e.employee_id=er.employee_id and er.role_id=r.role_id and r.name='ROLE_ADMIN' ")
                    .setResultTransformer(Transformers.aliasToBean(Employee.class))
                    .list();

我在Employee中有一个名为firstName的属性,但是当尝试在单元测试中在dao之上运行时,出现以下异常:

org.hibernate.PropertyNotFoundException: Could not find setter for firstname on class com.app.domain.Employee

我不知道从这个firstname属性进入hibernate状态?我在查询中不正确吗?

解决方法是将属性更改为firstname,getters,setters的任何方法,但是有关hibernate的原因以及如何避免这种行为的任何想法,因为我想在自己的域中使用camelCase,请提出建议。


问题答案:

您可以使用addScalar(String columnAlias,Type
type)
显式声明本机SQL的列别名:

  getCurrentSession()
  .createSQLQuery( "select e.id as id,e.first_name as firstName,e.password as password from xxxxxx")
                .addScalar("id",StandardBasicTypes.INTEGER )
                .addScalar("firstName",StandardBasicTypes.STRING )
                .addScalar("password",StandardBasicTypes.STRING )
                .setResultTransformer(Transformers.aliasToBean(Employee.class))
                .list();


 类似资料:
  • 我使用的是spring data jpa,我有一个实体,代码如下: 我使用org . spring framework . data . JPA . repository . JPA repository进行相关的CRUD操作。 当我第一次保存实体(例如creationTimestamp=1)时,方法保存(实体)返回保存的实体(如javadoc所说),其中包含用于进一步操作的新id(如javado

  • 问题内容: 我们的REST API接收一些JSON对象输入,其中某些字段必须不为null。这些可以是String / Integer,甚至可以是其他一些类实例作为参考。 我们正在尝试寻找一种方法来强制这些字段不为null,而不是在API中进行null检查的正确方法。当前: 我们想要的是这样的: 我们尝试了3件事: 1)升级到杰克逊2.0.6,并使用注释com.fasterxml.jackson.a

  • 我想在更深层次的继承中为一个类实现构建器模式,其中一些字段是强制性的(message,case),而一些字段是可选的(myOptField1,MyOptField2…)通过使用Lombok@Builder并假设父类不能更改。因此,我实现了自己的builder(),如下所示: 那么这个类的使用方式可以是: 在IntelliJ的想法中,一切似乎都很好,但我得到了编译错误: 因此编译器只能看到由Lomb

  • 问题内容: 我正在使用JPA Criteria API,在多查询查询中,我想检索一个枚举属性,而不是枚举本身。 这是我的查询: 在我有4个领域如下: 我从中检索数据的路径是: 有3个字段: 我想要做的是填充使用,是这样的: 我该如何解决? 问题答案: 我不确定多选的作用。但是当处理 投影 时,您可以使用 创建喜欢的构造函数(如果需要,添加参数) 在查询中调用构造函数,例如(如果需要,添加get参数

  • 这是我的疑问: 在中,我有以下4个字段: 我从中检索数据的路径是: 我该怎么解决这个?