南方电网的一道笔试题,各位大牛来看看怎么解

沭灬望月 2013-06-28 11:03:54
前几天遇到的一题南方电网的面试题,题目要求用JQPL,但小弟在这之前就没听到这东西,所以这题自然。。。大家懂的。
现把题目放上来,麻烦各位大牛来讲解下,不胜感激!

公司信息表company含有三个字段:id(主键),name(名称),address(地址)
员工信息表persons含有三个字段:id(主键),name(名称),company_id(所属公司id)。
表company和persons是一对多关系,数据持久化使用实现JPA规范的Hibernate框架,问题如下:
(1)查询包含姓“李”员工的前十公司(按id排序)的名称,写出JPQL查询语句。查询返回结果为Object[],以及如何实现分页(使用hibernate接口)?(10分)
(2)JPQL语句参数定义方式有哪几种,格式分别是什么?(5分)
(3)重新编写问题1的查询语句,查询语句中需包含company类需要实现什么样的构造函数?(5分)
(4)问题(1)的查询语句和问题(3)的返回结果有什么区别?(5分)
...全文
403 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
沭灬望月 2013-11-11
  • 打赏
  • 举报
回复
虽然还是没看明白,不过结帖吧,谢谢各位!
陈字文 2013-06-29
  • 打赏
  • 举报
回复
难道就是传说中的HQL?
Wentasy 2013-06-29
  • 打赏
  • 举报
回复
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的构造方法,赋值给对应属性
善若止水 2013-06-28
  • 打赏
  • 举报
回复
真没有见过,
forgetsam 2013-06-28
  • 打赏
  • 举报
回复
Java Persistence Query Language 就是JPA用的查询语言而已,你随便参照Hibernate改改就是。
sych888 2013-06-28
  • 打赏
  • 举报
回复
JQPL?百度都不知道是什么,太强大了

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧