我有一个相当复杂的数据模型,因此有一个相当复杂的查询(使用条件API):
这是我的标准:
Criteria criteria = getSession().createCriteria(MyClass.class);
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
.setFetchMode("pricedBy", FetchMode.JOIN)
.setFetchMode("canceledBy", FetchMode.JOIN)
.setFetchMode("product", FetchMode.JOIN)
.setFetchMode("product.underlyings", FetchMode.JOIN)
.setFetchMode("product.tradedBy", FetchMode.JOIN)
.setFetchMode("product.requestedBy", FetchMode.JOIN)
.setFetchMode("fileUploads", FetchMode.JOIN)
.add(Restrictions.eq("issuer.id", issuerCompanyId));
criteria.addOrder(Order.desc("product.id"));
criteria.setFirstResult(pagingParams.getDisplayStart())
.setMaxResults(pagingParams.getDisplayLength());
List<MyClass> result = criteria.list()
没有更多,没有跳过。
如果我现在看一下生成的SQL(非常大的声明),它就会这样结束:
...and this_.issuer_id=? order by underlying12_.ric asc, this_.product_id desc
这是我的问题:底层12_.ric asc 的顺序是完全不需要的,当然它会导致我的结果排序错误。
我完全不知道该陈述的来源以及如何摆脱它。欢迎任何帮助: - )
更新:在我自己的代码中找到order by
语句。这个问题当然可以结束。
答案 0 :(得分:1)
我的坏。刚刚发现了从产品到底层的这种映射:
@OrderBy(值= “RIC”)
private Set underlyings = new HashSet();