JPQL实际上就是EJB中使用到的查询语句,Hibernate中的HQL也是借鉴EJB的。 //(1)查询包含姓“李”员工的前十公司(按id排序)的名称,写出JPQL查询语句。查询返回结果为Object[],以及如何实现分页(使用hibernate接口)? SELECT company.name, company.address FROM Company company, Persons persons WHERE company.id = persons.company_id AND persons.name like "李%" ORDER BY persons.id DESC; //取数据 q.getResultList();//两种结果 Company与Object[]Query q = em.createQuery(jpql); q.setFirstResult(startPosition); //分页起始位置 q.setMaxResults(maxResult); //分页总数q.executeUpdate(); //执行并返回影响记录数 q.getResultList(); //获取查询的所有结果 q.getSingleResult(); //获取查询的第一条结果 //(2)JPQL语句参数定义方式有哪几种,格式分别是什么? 两种 :xxx 表示以:后的xxx为名字的占位 ?1 表示以?后的数字为位置的占位//(3)重新编写问题1的查询语句,查询语句中需包含company类需要实现什么样的构造函数? SELECT new test.Company(company.name, company.address) FROM Company company, Persons persons WHERE company.id = persons.company_id AND persons.name like "李%" ORDER BY persons.id DESC;Company类中需要实现具有参数name和address的构造方法 //test为包名//(4)问题(1)的查询语句和问题(3)的返回结果有什么区别? 问题1中的返回结果:取到数据后返回 问题3中的返回结果:取到数据后调用Company的构造方法,赋值给对应属性
//(1)查询包含姓“李”员工的前十公司(按id排序)的名称,写出JPQL查询语句。查询返回结果为Object[],以及如何实现分页(使用hibernate接口)?
SELECT company.name, company.address FROM Company company, Persons persons
WHERE company.id = persons.company_id AND persons.name like "李%" ORDER BY persons.id DESC;
//取数据
q.getResultList();//两种结果 Company与Object[]Query q = em.createQuery(jpql);
q.setFirstResult(startPosition); //分页起始位置
q.setMaxResults(maxResult); //分页总数q.executeUpdate(); //执行并返回影响记录数
q.getResultList(); //获取查询的所有结果
q.getSingleResult(); //获取查询的第一条结果
//(2)JPQL语句参数定义方式有哪几种,格式分别是什么?
两种
:xxx 表示以:后的xxx为名字的占位
?1 表示以?后的数字为位置的占位//(3)重新编写问题1的查询语句,查询语句中需包含company类需要实现什么样的构造函数?
SELECT new test.Company(company.name, company.address) FROM Company company, Persons persons
WHERE company.id = persons.company_id AND persons.name like "李%" ORDER BY persons.id DESC;Company类中需要实现具有参数name和address的构造方法
//test为包名//(4)问题(1)的查询语句和问题(3)的返回结果有什么区别?
问题1中的返回结果:取到数据后返回
问题3中的返回结果:取到数据后调用Company的构造方法,赋值给对应属性