使用hibernate3的createSQLQuery遇到的问题
来源:互联网 发布:python html网页解析 编辑:程序博客网 时间:2024/06/03 23:06
为了给访问加速,把DAO中的一些HQL的操作改成了SQL,其实最主要的原因是:操作的是多张表,返回的数据也来源于多个表的字段;
String sql = “select A.id ID, A.name NAME, B.salary SALARY from employee A , Salary B where.......”;
Query query =getSession().createSQLQuery(sql)
.setResultTransformer(Transformers.aliasToBean(ReturnEmployee.class));
由于返回的ID, NAME, SALARY 非一个和表对应的一个BEAN,所以自己需要建立一个ReturnEmployee的BEAN,属性包括ID, NAME, SALARY;在mysql下调试,成功。
但是在ORACLE环境下却报错:
this is actually a limitation of some databases which return alias all uppercase instead of using the casing you actually specified.
String sql = “select A.id ID, A.name NAME, B.salary SALARY from employee A , Salary B where.......”;
Query query =getSession().createSQLQuery(sql)
.setResultTransformer(Transformers.aliasToBean(ReturnEmployee.class));
由于返回的ID, NAME, SALARY 非一个和表对应的一个BEAN,所以自己需要建立一个ReturnEmployee的BEAN,属性包括ID, NAME, SALARY;在mysql下调试,成功。
但是在ORACLE环境下却报错:
org.hibernate.PropertyNotFoundException: Could not find setter for ID on class com.ReturnEmployee经过几个小时的查错,调试,没有发现问题的所在,只能摆脱GOOGLE了,最后在国外的一个论坛上找到了答案:
this is actually a limitation of some databases which return alias all uppercase instead of using the casing you actually specified.
until then use .addScalar(..) to workaround it.OK,问题解决了!
原来是Hibernate对ORALCE的支持有BUG,所以修改代码为:
Query query = getSession().createSQLQuery(sql).addScalar("ID")
.addScalar("NAME").addScalar("SALARY");
就可以了,需要注意的是
List employeeData = query.list();
返回的employeeData 中的数据是object[],这样取值:
List employeeBean = new ArrayList();
for (int i = 0; i < employeeData.size(); i++) {
Employee employee = new Employee();//把"裸"数据组装到自己的employee类
Object[] object = (Object[]) employeeData.get(i);
employee.setId(object[0].toString());
employee.setName(object[1].toString());
employee.setOrgType(object[2].toString());
employeeBean.add(employee);
}
- 使用hibernate3的createSQLQuery遇到的问题
- 使用hibernate3的createSQLQuery遇到的问题
- 使用hibernate3的createSQLQuery遇到的问题
- 关于Hibernate的createSQLQuery问题
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- Hibernate的createSQLQuery查询的问题
- Hibernate的createSQLQuery查询的问题
- Hibernate3映射到PostgreSQL中遇到的小问题!
- Struts2+Spring3+Hibernate3整合时遇到的包冲突问题
- struts2.1.6 + hibernate3.3 + spring3.0 遇到的问题
- struts2.1.6+hibernate3.3+spring3.0遇到的问题
- 使用Hibernate3.2的问题(1)
- 使用Hibernate3.2的问题(2)
- 使用Hibernate3.2的问题(3)
- 使用Hibernate3.2的问题(4)
- createSQLQuery使用uniqueResult的一个错误
- 配置遇到的问题:struts2+spring2+hibernate3+c3p0 遇到的数据库连接问题
- Hibernate3的Criteria使用
- WPF中将图片设置为按钮并取得选取值的方法
- 数据库对象的缓存策略
- JAVA线程池的简单实现及优先级设置
- 关于GridView
- Tapestry 3.0 绘制页面 简单分析
- 使用hibernate3的createSQLQuery遇到的问题
- WPF中将四个数字字符串值(比如:"10,10,300,300")转为Rect
- 使用Capistrano部署rails
- C#读取IE的Cache(转)
- Basic 2D Math(zz)
- 人生感言
- Asp转为根路径格式函数
- "aspnet_merge.exe”已退出,代码为1的错误的解决方法
- Asp根路径转为带域名全路径格式函数