一.两个表: 
person
1 id
2 name(人名)
3 roomid

room
1 roomid
2 room(房间号)

说明:一个room有多个person,通过roomid取出name和room封装到list

二.两个类:
person类

private int id;
private String name;
private int roomid;

public Person()
{

}

public Person(int id,String name,int roomid)
{
this.id=id;
this.name=name;
this.roomid=roomid;
}

public int getId()
{
return this.id;
}

public void setId(int id)
{
this.id = id;
}

public String getName()
{
return this.name;
}

public void setName(String name)
{
this.name = name;
}

public int getRoomid()
{
return roomid;
}

public void setRoomid(int roomid)
{
this.roomid = roomid;
}


room类

private int roomid;
private String room;

public Room()
{

}

public Room(int roomid,String room)
{
this.roomid=roomid;
this.room = room;
}

public String getRoom()
{
return this.room;
}

public void setRoom(String room)
{
this.room = room;
}

public int getRoomid()
{
return roomid;
}

public void setRoomid(int roomid)
{
this.roomid = roomid;
}



三.Person.hbm.xml和Room.hbm.xml正常配置,此处就不写了.



四.Hibernate语句

String queryString="select p.name , r.room from Person p , Room r
where p.roomId = r.roomId";

return getHibernateTemplate().find(queryString);

此处返回一个list

五.获取list的值

设返回值是list
写一个JavaBean:
NrUtil
private String name;
private String room;

List<NrUtil> nrUtilList;

取list中的数据放入JavaBean中

Iterator it=list.iterator();
while(it.hasNext())
{
Object[] ob=(Object[])it.next();
String name=(String)ob[0];
String room=(String)ob[1];
NrUtil nr=new NrUtil(name,room);
nrUtilList.add(nr);
}

六.在JSP页面显示
利用<s:iterator>显示



这是我在网上找到的一篇,感觉不错,摘了下来。

以下是我在项目中所写:



/* +++++++++++查找新闻,用根据新闻所属系部查找已经通过验证的新闻++++++++++++++ */

@SuppressWarnings("unchecked")

public List<News> findNewsBydepartId(BigDecimal departId, int currentPage,

int lineSize) {

// TODO Auto-generated method stub

System.out.println("************test************"+departId);

String hql = "FROM News AS n WHERE n.department.departId = ? AND n.newsIsvalidate = 1 order by n.newsId desc";

Query q = this.getSession().createQuery(hql);

q.setBigDecimal(0, departId);

q.setFirstResult((currentPage - 1) * lineSize);

q.setMaxResults(lineSize);

List list = q.list();

return list;

}



/* ++++++++++++++++++得到查询的系部新闻的总数++++++++++++++++++++++++++ */

@SuppressWarnings("unchecked")

public int getBydepartIdCount(BigDecimal departId) {

System.out.println("************testcount************"+departId);

session = this.getSession();

Number num = null;

String hql = "SELECT COUNT(*) from News AS n WHERE n.newsIsvalidate = 1 AND n.department.departId = ? ";

Query q = this.session.createQuery(hql);

q.setBigDecimal(0, departId);

List all = q.list();

if (all.size() > 0) {

num = (Number) all.get(0);

System.out.println("查询的系部新闻的总数" + num);

}

return num.intValue();

}