Hibernate对象关系映射总结
<query name="myquery"> <![CDATA[ from com.sun.hibernate.Employer where job = ? ]]> </query>
Query q = session.getNamedQuery("myquery"); q.setParameter(0, "MANAGER"); 6. 属性查询
session = HibernateSessionFactory.getCurrentSession();
Query query = session.createQuery("select jzmc, quyu, yzdh from HetongVo "); list = query.list(); for (int i = 0; i < list.size(); i++) { Object obj[] = (Object[]) list.get(i);
System.out.println("jzmc==obj[0]===" + obj[0]); System.out.println("quyu==obj[1]===" + obj[1]); System.out.println("yzdh==obj[2]===" + obj[2]); } 7. 实例化查询
public void queryInstanceByHibernateHQL() {
List list = null; Session session = null; try {
session = HibernateSessionFactory.getCurrentSession();
/**通过list.get(i)获取的结果就不再是一个数组,而是一个包装后的对象/ Query query = session.createQuery("select new HetongVo(jzmc, quyu, yzdh) from HetongVo "); list = query.list(); for (int i = 0; i < list.size(); i++) { HetongVo vo = (HetongVo) list.get(i);
}
} catch (Exception ex) {
ex.printStackTrace(); } finally {
session.clear(); session.close(); } }
8. 多态查询
对于pojo来说,java中的这种关系被扩展到了数据库表中
hibernate在查询一个表的同时,会检查该表所对应的POJO类有没有子类,如果有,一起查询出来 9. 分页查询
//查询第三到五条
q.setFirstResult(3);//从第三条开始 q.setMaxResults(3);//提取三条