gpt4 book ai didi

hibernate - 带有 createSQLQuery 的 ResultTransformer 在实体字段中强制不使用驼峰命名法

转载 作者:行者123 更新时间:2023-11-29 11:10:33 25 4
gpt4 key购买 nike

我有一个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

我不知道 hibernate 从哪里得到这个名字属性?我没有在我的查询中纠正它?

解决方法是将属性更改为 firstname,getters,setters但是任何想法为什么 hibernate 会产生这种行为,以及如何避免它,因为我想在我的域中使用驼峰命名法,请告知。

最佳答案

您可以使用 addScalar(String columnAlias, Type type)显式声明 native 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();

关于hibernate - 带有 createSQLQuery 的 ResultTransformer 在实体字段中强制不使用驼峰命名法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com