Mysql Hibernate查询在整个表中选择唯一的行

Mysql Hibernate查询在整个表中选择唯一的行,mysql,hibernate,hql,Mysql,Hibernate,Hql,我想知道如何过滤休眠结果。 例如,我有一个示例表: -------------------------------------------- | ID | STRING | DATE | -------------------------------------------- | 1 | "ABC" | 2014-11-07 21:45:00 | --------------------------------------------

我想知道如何过滤休眠结果。
例如,我有一个示例表:

--------------------------------------------
|  ID  |  STRING  |            DATE        |
--------------------------------------------
|   1  |   "ABC"  |   2014-11-07 21:45:00  |
--------------------------------------------
|   2  |   "ABC"  |   2014-11-07 22:45:00  |
--------------------------------------------
|   3  |   "DCE"  |   2014-11-07 22:48:00  |
--------------------------------------------
|   4  |   "ABC"  |   2014-11-07 23:48:00  |
--------------------------------------------
我需要的结果是:

--------------------------------------------
|  ID  |  STRING  |            DATE        |
--------------------------------------------
|   3  |   "DCE"  |   2014-11-07 22:48:00  |
--------------------------------------------
|   4  |   "ABC"  |   2014-11-07 23:48:00  |
--------------------------------------------
表的所有行,但是,当列字符串中的内容相同时,具有最新日期的列就是结果集中的列

在冬眠中我知道 -选择所有行; -选择重复的行并仅保留最近的行

但我不知道如何将这两种情况结合起来,而且我在任何地方都找不到它


我有一个固定长度的字符串,我在代码中使用了一个伪主键来标识寄存器,但值是由用户插入的,我以前不知道列中的内容

您可以使用
notexists
子句执行此操作:

select e.*
from example e
where not exists (select 1 from example e2 where e2.string = e.string and e2.date > e.date);

也就是说,选择没有其他行具有相同字符串和更大日期的所有行。

Tks用于建议mskfisher。在HQL中,这不起作用,sintax和命令是不同的。如果可能的话,我可以为HQL做这个翻译。但是我不知道我是否知道这样做,=[.@hibernatroubles…我很确定HQL支持相关子查询。是的,如果数据库支持(在我的例子中,MySQL支持)hibernate可以执行此查询。我正在尝试。它可以工作!!!经过一些修改它可以工作!!!非常感谢!!再次感谢。您在我的项目中节省了很多时间!=]。你是最棒的!