java - Hibernate 按关联(可选)字段排序

标签 java hibernate

我正在尝试对 Hibernate 数据集进行排序,按(可选)关联对象的属性进行排序。我按照 hibernate order by association 中的示例进行操作- 这在一定程度上是有效的。当没有关联对象时,问题就会出现,整个记录将被忽略。

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

非常感谢。

最佳答案

所引用的问题使用了 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";

您将在其中选择与 EntityB 连接的所有 EntityA(如果存在),按 EntityB.name 字段排序。

关于java - Hibernate 按关联(可选)字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12900029/

相关文章:

javascript - 如何使用 request.getparameter 在我的 java Controller 中获取 JavaScript 变量?

java - RuntimeException : org. hibernate.exception.SQLGrammarException:无法执行查询

java - Spring Boot 存储库双向加入

java - 为什么我们需要在数据源中提供密码?

java - 列表的方法(如 remove、contains、removeAll)具有 Object 类型参数而不是通用 <T> 类型

java - JSONProvider 返回空对象,例如 String

java - 为什么使用 @Transient 会出现 "org.hibernate.MappingException: In trying to locate getter for property, Class defined both a get and is variant"错误?

java - 如何从函数输入参数创建同名数组

java - 以下代码中主线程 sleep /中断的工作方式

java - 如何在没有主键的情况下为表或 View 做 hibernate 映射