hibernate重复数据问题

技术科 2011-02-05 10:04:52
有如下数据表
ID 姓名 编号
1 张三 001
2 张三 002
3 张三 003
4 李四 001
5 李四 002

要求检索数据时只显示人员的最后一次的编号,例

ID 姓名 编号
1 张三 003
5 李四 002

数据库为mysql+hibernate3.5,使用session.createQuery("")如何实现?显示结果按ID倒序排列

...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2011-02-09
  • 打赏
  • 举报
回复
这种group by分组和max函数的应用最好不要用HQL,用底层的SQL反而高效和直观得多

select max(ID), 姓名, 编号 from table group by 姓名 编号

技术科 2011-02-09
  • 打赏
  • 举报
回复
qy = session.createQuery("from JgdBean jgd where jgd.jgdnum like ? group by jgdnum order by jgdid desc");
qy.setParameter(0, "%" + getModel().getJgdnum() + "%");

jgdlists = qy.list();

有在这个语句中测试过的么?测试通过可得满分
rush1234 2011-02-09
  • 打赏
  • 举报
回复
你用的什么数据库?如果是2000的话可以借助于Inserted表
rush1234 2011-02-09
  • 打赏
  • 举报
回复
你id什么类型?字符串类型的吧,字符串好像不能比大小吧
kai27ks 2011-02-07
  • 打赏
  • 举报
回复
group by jgdnum having max(jgdid)
Arthur0088 2011-02-05
  • 打赏
  • 举报
回复
使用distinct关键字,记得要指明要按照哪个字段过滤,比如你上面的按照姓名进行过滤,然后用group by分组查询。
cscxxx 2011-02-05
  • 打赏
  • 举报
回复
sql 里加 desc ?
技术科 2011-02-05
  • 打赏
  • 举报
回复
给个完整的代码先,session.createQuery("")这段怎么写?

qy = session.createQuery("from JgdBean jgd where jgd.jgdnum like ? group by jgdnum order by jgdid desc");
qy.setParameter(0, "%" + getModel().getJgdnum() + "%");

jgdlists = qy.list();

按照楼上说的,我的这段代码每次查寻的结果都是
ID 姓名 编号
1 张三 001
4 李四 001

如何写才能实现
ID 姓名 编号
3 张三 003
5 李四 002

要求完整的代码

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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