最近项目需要用到是多表联查,但是我对hibernate不是太熟悉. 在网上查了很多有关hibernate的多表联查,均没有结果.所以我就自己上网下载了一本精通hibernate的书.
里面提及到多表联查,原来hibernate联查是这样的:
List<CheckTimeLog> list = null;
Query query = getSession().createQuery("FROM CheckTimeLog c left join fetch c.personMsg
where c.personMsg.staffName like ? and c.checkDate between ? and ? ")
.setParameter(0, "%"+search+"%").setParameter(1,startDate ).setParameter(2,endDate);
list = query.list();
int i = list.get(0).getId();
System.out.println("id:"+i);
说明: 我的checkTimeLog 里面有个personMsg(一个表) 就是多对一的关系. checkTimeLog表中的 有个personMsgID的属性,连接到personMsg,这时,hiberbate会根据你的映射文件会自动判断. 最后返回的list,就是CheckTimeLog的对象.太好用了