В вашем соединении вам нужно включить несколько активных наборов записей (MARS).
http://msdn.microsoft.com/en-us/library/h32h3abf%28v=vs 0,80% 29.aspx
Хорошо, нашел ответ. Я попробовал кое-что, что, как мне казалось, не сработало, но, к моему удивлению, сработало. Я пробовал это:
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), чтобы вы могли продолжать создавать критерии в в случае, если он вам нужен (например, если вам нужен второй порядок по свойству из исходной сущности).