Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 按关联休眠顺序_Hibernate_Sql Order By_Associations - Fatal编程技术网

Hibernate 按关联休眠顺序

Hibernate 按关联休眠顺序,hibernate,sql-order-by,associations,Hibernate,Sql Order By,Associations,我正在使用Hibernate3.2,并使用条件构建查询。我想为多对一关联添加和“订单依据”,但我不知道如何才能做到这一点。 我想Hibernate查询最终会是这样的: select t1.a, t1.b, t1.c, t2.dd, t2.ee from t1 inner join t2 on t1.a = t2.aa order by t2.dd <-- need to add this 选择t1.a、t1.b、t1.c、t2.dd、t2.ee 从t1开始 t1上的内部连接t2.a=

我正在使用Hibernate3.2,并使用条件构建查询。我想为多对一关联添加和“订单依据”,但我不知道如何才能做到这一点。 我想Hibernate查询最终会是这样的:

select t1.a, t1.b, t1.c, t2.dd, t2.ee
from t1
inner join t2 on t1.a = t2.aa
order by t2.dd   <-- need to add this
选择t1.a、t1.b、t1.c、t2.dd、t2.ee
从t1开始
t1上的内部连接t2.a=t2.aa

按t2.dd排序Ok,找到了答案。我尝试了一些我认为不管用的东西,但令我惊讶的是,它确实管用了。我试着这样做:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class);

criteria.addOrder(Order.asc("assnName.propertyName"))
但实际起作用的是:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class);
Criteria assnCrit = criteria.createCriteria("assnName");

assnCrit.addOrder(Order.asc("propertyName"));

我假设addOrder()方法只能用于主标准,而不能用于任何关联标准。

我遇到了同样的问题,也可以这样解决:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class)
  .createAlias("assnName","a")
  .addOrder(Order.asc("a.propertyName"));

createAlias允许您将标准植根于原始实体(本例中为WipDiscreteJob.class),以便您可以在需要时继续构建标准(例如,如果您需要原始实体的第二个按属性排序)。

正在寻找这一点,谢谢!您甚至可以执行
.createAlias(“assnName”、“assnName”)
,这允许您保持与HQL相同的语法。@Abdullah很高兴能够提供帮助。这非常有帮助。找到这个花了一段时间。