最近在做毕业设计,Felx+Spring+Hiberinate , 用的Myeclipse6.0.1自带的Hibernate3.1包,在做多表查询时遇到了些问题,没有Hibernate3.2的
SQLQuery q=(SQLQuery) this.getSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(Production1.class));
的setResultTransformer()方法,无法获得List结果集映射到VO类中,查询网上众多方法后总结了下方法实现多表查询。
Staffshow.java VO类,用来存多表联合查询的Set,Get
package com.gxu.bean;
public class Staffshow {
private Long staffid;
private String staffname;
private String positionName;
private String deptname;
private String sex;
public Staffshow()
{}
public Staffshow(Long staffid,String staffname,String sex,String positionName,String deptname)
{
this.staffid = staffid;
this.staffname = staffname;
this.positionName = positionName;
this.deptname = deptname;
this.sex=sex;
}
public Long getStaffid() {
return staffid;
}
public void setStaffid(Long staffid) {
this.staffid = staffid;
}
public String getStaffname() {
return staffname;
}
public void setStaffname(String staffname) {
this.staffname = staffname;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
show()方法,其中Staff,Dept,Position为Hibernate映射数据库自动生成的VO类
public ArrayList show() {
List list = null;
ArrayList al = new ArrayList();
// /取得Seesion对象
Session session = HibernateSessionFactory.getSession();
// /启动事务
Transaction ta = session.beginTransaction();
// /sql语句
String sql = "select s.*,d.*,p.* from Staff as s ,Dept d,Position p "
+ "where s.deptid=d.deptid and s.positionid=p.positionid";
try {
// /创建Query对象
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("s", Staff.class);
query.addEntity("d", Dept.class);
query.addEntity("p", Position.class);
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
Object[] obj = (Object[]) list.get(i);
Staffshow ss = new Staffshow();
for (int j = 0; j < obj.length; j++) {
if (obj[j] instanceof Staff) {
Staff s = (Staff) obj[j];
ss.setStaffid(s.getStaffid());
ss.setStaffname(s.getStaffname());
ss.setSex(s.getSex());
System.out.print(s.getStaffname() + " ");
} else if (obj[j] instanceof Dept) {
Dept d = (Dept) obj[j];
ss.setDeptname(d.getDeptname());
System.out.print(d.getDeptname() + " ");
} else if (obj[j] instanceof Position) {
Position p = (Position) obj[j];
ss.setPositionName(p.getPositionName());
}
}
System.out.println(ss.getStaffname() + "----"
+ ss.getDeptname() + " " + ss.getPositionName());
al.add(ss);
System.out.println();
}
for (int k = 0; k < al.size(); k++) {
Staffshow s = (Staffshow) al.get(k);
System.out.println("<" + s.getStaffid() + " "
+ s.getStaffname() + " " + s.getDeptname() + " "
+ s.getPositionName() + ">");
}
}
ta.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return al;
}
分享到:
相关推荐
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....
5.1.2 每个带有联合的具体类一张表 5.1.3 每个类层次结构一张表 5.1.4 每个子类一张表 5.1.5 混合继承策略 5.1.6 选择策略 5.2 Hibernate类型系统 5.2.1 概述实体和值类型 5.2.2 内建...
3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射文件 3.4.1 映射文件的文档类型定义(DTD) 3.4.2 把Customer持久化类映射到CUSTOMERS表 3.5 通过...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...
Hibernate查询语言(Query Language), 即HQL 11.1. 大小写敏感性(Case Sensitivity) 11.2. from 子句 11.3. 联合(Associations)和连接(joins) 11.4. select子句 11.5. 统计函数(Aggregate ...
详细的Hibernate3的帮助文档 前言 1. 翻译说明 2. 版权声明 1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. Hibernate入门 2.1. 前言 2.2. ...
3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射文件 3.4.1 映射文件的文档类型定义(DTD) 3.4.2 把Customer持久化类映射到CUSTOMERS表 3.5 通过...
3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射文件 3.4.1 映射文件的文档类型定义(DTD) 3.4.2 把Customer持久化类映射到CUSTOMERS表 3.5 通过...
3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射文件 3.4.1 映射文件的文档类型定义(DTD) 3.4.2 把Customer持久化类映射到CUSTOMERS表 3.5 通过...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 ...
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order ...