0

我有一个多对一的关系如下

    <hibernate-mapping default-lazy="false" package="com.my.sample.data">
  <class name="Person" table="person_table">
<!-- other stuff -->
 <many-to-one class="Company" column="p_id" fetch="join" insert="false" name="company" update="false" not-found="ignore" not-null="false" />

公司映射到 company_table 并具有属性 company_id。有没有办法通过休眠获取由 Company.company_id 订购的人员列表。所以当我查询

  items = (List<A>) getSession().createCriteria(Person.class)                        
                        .add(Restrictions.in("person_id", pIds)
                        ).list();

所以我最终得到了一个由 company_id 排序的人员列表。我发现的唯一 addOrder 语法采用了类似的属性名称

addOrder(Order.asc("person_id").` 

我找不到如何引用类似于外来对象的属性名称

addOrder.Order.asc("company.company_id")

谢谢。

4

1 回答 1

0

尝试这个。我认为这会有所帮助。基于标准理论。Criteria 不能进行隐式连接。所以我们让它明确。

例子:

items = (List<A>) getSession().createCriteria(Person.class)                        
                        .add(Restrictions.in("person_id", pIds)
                        .createCriteria("company")
                        .addOrder("company_id");
                        ).list();

希望这对你有用。

于 2011-04-01T01:26:34.440 回答