【发布时间】:2016-01-28 09:36:20
【问题描述】:
我想要实现的目标:使用 Hibernate Criteria 获取由另一列排序的唯一 ID 列表。
到目前为止我的代码:
Criteria crt = createCriteria(); //complex method returning Criteria
//with joined tables, restrictions and ordering
crt.setProjection( Projections.distinct( Projections.property( "id")));
List<Integer> ids = crt.list();
出了什么问题:当我按列设置顺序让我们说“日期”时,我得到查询:
SELECT DISTINCT id FROM table \\JOIN, WHERE...\\ ORDER BY date);
这显然是错误的并导致错误:
ORA-01791: not a SELECTed expression
我的想法如何解决:以某种方式强制 Hibernate 生成此查询:
SELECT DISTINCT id FROM (SELECT * FROM table \\JOIN, WHERE...\\ ORDER BY date);
问题和我尝试过的: 有createCriteria() 方法,如果不是绝对必要,我不想修改它。我没有找到将这个 Criteria 用作 DetachedCriteria 的方法。
【问题讨论】:
-
如果有帮助,您可以将分离的条件更改为正常条件。
标签: hibernate hibernate-criteria