您的位置:首页 > 其它

hibernate两表级联查询语句

2014-09-18 16:21 113 查看
一.两个表:
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(); }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: