Tôi có một truy vấn sql như sau:ResultTransformer với createSQLQuery buộc không camelCase trong các lĩnh vực tổ chức
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();
tôi có một tài sản trong Employee được gọi là firstName, nhưng khi cố gắng chạy trên dao trong một thử nghiệm đơn vị, tôi đang nhận được ngoại lệ sau:
org.hibernate.PropertyNotFoundException: Could not find setter for firstname on class com.app.domain.Employee
Tôi không biết nơi hibernate nhận được từ thuộc tính firstname này? Tôi đã không đúng trong truy vấn của tôi?
Mọi cách giải quyết khác là thay đổi thuộc tính thành firstname và getters, setters quá nhưng bất kỳ ý tưởng nào tại sao hibernate lại có hành vi như vậy và cách tránh nó, vì tôi muốn sử dụng camelCase trong miền của mình .
addScalar + cũng chọn trong truy vấn? –
tôi nghĩ vậy, vì chỉ sử dụng 'addScalar()' mà không có 'select as' sẽ cho tôi lỗi. –