我写了个HiberDAOBean.java:
在这个类利用hibernate进行多表查询,得到list,并将list分解,放到Object[] object中。部分代码如下: session = HibernateUtil.getSession();
tx = session.beginTransaction();
String sql = "from KT as kt, KTType as ktType where kt.typeNo = ktType.typeNo and kt.status = 2";
Query query = session.createQuery(sql);
list = (List)query.list();
//System.out.println("list.size() = " + list.size());
Iterator it = list.iterator();
bject[] o = null;
KT kt = null;
KTType ktType = null;
while(it.hasNext()){
o = (Object[]) it.next();
kt = (KT) o[0];
ktType = (KTType) o[1];
System.out.println("kt.ktNo = " + kt.getKtNo());
System.out.println("kt.ktName = " + kt.getKtName());
System.out.println("ktType.ktNo = " + ktType.getTypeNo());
System.out.println("ktType.ktName = " + ktType.getTypeName());
}
这个类中的方法public Object[] doSelectUserInfoDataFromDB()页面的<form action="select.action" method="post">.....</form>
因为是使用struts2,所以写了个SelectAction类
部分代码如下:HibernateDAOBean hDAOB = new HibernateDAOBean();
o = hDAOB.doSelectUserInfoDataFromDB();//那个o是我之前声明的一个对象数组HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("list", o);return "success";
然后想到页面上输出,怎么获取?是不是我这个方法不好,有没有更好的办法?大家提提意见!!!!!!小弟我在这谢过了.
在这个类利用hibernate进行多表查询,得到list,并将list分解,放到Object[] object中。部分代码如下: session = HibernateUtil.getSession();
tx = session.beginTransaction();
String sql = "from KT as kt, KTType as ktType where kt.typeNo = ktType.typeNo and kt.status = 2";
Query query = session.createQuery(sql);
list = (List)query.list();
//System.out.println("list.size() = " + list.size());
Iterator it = list.iterator();
bject[] o = null;
KT kt = null;
KTType ktType = null;
while(it.hasNext()){
o = (Object[]) it.next();
kt = (KT) o[0];
ktType = (KTType) o[1];
System.out.println("kt.ktNo = " + kt.getKtNo());
System.out.println("kt.ktName = " + kt.getKtName());
System.out.println("ktType.ktNo = " + ktType.getTypeNo());
System.out.println("ktType.ktName = " + ktType.getTypeName());
}
这个类中的方法public Object[] doSelectUserInfoDataFromDB()页面的<form action="select.action" method="post">.....</form>
因为是使用struts2,所以写了个SelectAction类
部分代码如下:HibernateDAOBean hDAOB = new HibernateDAOBean();
o = hDAOB.doSelectUserInfoDataFromDB();//那个o是我之前声明的一个对象数组HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("list", o);return "success";
然后想到页面上输出,怎么获取?是不是我这个方法不好,有没有更好的办法?大家提提意见!!!!!!小弟我在这谢过了.
KT.javaprivate int ktNo;
private String ktName;
private int ktTypeNo;//感觉这样好像是错的,因为这个属性是另一个表的主键KTType.javaprivate int KTTypeNo;
private String KTTypeName;
因为KT表的字段ktTypeNo依赖于表KTType的主键,所以要不要把修改字段改成:
private KTType ktType;
然后利用KT.hbm.xml文件<one-to-one table="KTType" ....></one-to-one>大家怎么想的?
如果你这么写,是浪费了hibernate开发的功能。
你知道hibernate会怎么执行这sql么?
select * from KT as kt, KTType as ktType where kt.typeNo = ktType.typeNo and kt.status = 2
你得到的是两表的所有字段值,你怎么能直接给他进行类转换呢?
KT kt = null;
KTType ktType = null;
while(it.hasNext()){
o = (Object[]) it.next();
kt = (KT) o[0];
ktType = (KTType) o[1];
楼主加油
你说得有道理,我现在是用了第二种办法,让他返回一个List。如果需要查询第二张表的话,通过KTType可以去查找。
你说得有道理,我现在是用了第二种办法,让他返回一个List。如果需要查询第二张表的话,通过KTType可以去查找。