1

我正在尝试对 Hibernate 数据集进行排序,按(可选)关联对象的属性进行排序。我按照关联的休眠顺序的示例进行了操作-这在一定程度上有效。当没有关联对象时,问题就来了,整个记录都被忽略了。

如果我将对象的关联类型更改为外部联接,它会有所帮助吗?如果是这样,有人可以指点我正确的指令吗?

非常感谢。

4

2 回答 2

1

引用的问题使用了 Criteria 查询,因此我不确定您是否需要这些问题的答案,或者您是否只需要 HQL。假设 HQL 没问题,如果您有这样的实体:

class EntityA {
   private Long id;
   @OneToMany
   private EntityB b;

   ....
}

class EntityB {
  private Long id;
  private String name;
}

如果您在 EntityA 和 EntityB 之间有一个可选的 OneToMany 关系,那么您应该能够使用类似以下的查询:

"SELECT obj FROM " + EntityA.class.getName() + " obj LEFT JOIN obj.b obj2 ORDER BY obj2.name";

您将在其中选择所有EntityAEntityB它存在的地方连接的地方,按EntityB.name字段排序。

于 2012-10-15T18:23:10.267 回答
1

我只用一行代码更改就解决了这个问题。在构造 Criteria 对象时,我能够传递参数 JoinFragment.LEFT_OUTER_JOIN。例如:

    Criteria subCriteria = criteria.createCriteria(subTypeName, JoinFragment.LEFT_OUTER_JOIN);
于 2012-10-16T14:11:39.227 回答