当前位置: 首页 > 知识库问答 >
问题:

使用标准API按相关实体属性订购JPA实体

冯庆
2023-03-14

我有两个遗留实体

public class Owner {
    @Column(name = "board_id")
    private Integer board_id;

    public Integer getBoardId() {
        return board_id;
    }

    public void setBoardId(Integer board_id) {
        this.board_id = board_id;
    } 
}
public class Board {
        private String cableId;
        private Integer id;

        @Id
        @GeneratedValue(generator = "board side_seq_name")
        public Integer getId() {
            return id;
        }

        @Column(name = "cable_id")
        public String getCableId() {
            return cableId;
        }

        public void setCableId(String cableId) {
            this.cableId = cableId;
        } 
}

所有者所有者连接。board_id=board。id。我有一个CriteriaAPI查询,它返回所有者集合,我需要按Owner对其进行排序。板cableId

因为我不能将子查询放到orderBy,也不能更改这些实体的JPA映射,所以对我来说似乎并不容易。

请给任何想法。

共有1个答案

戚学
2023-03-14

既然你没有发布你已经拥有的东西,你就必须根据需要调整它。像这样的

CriteriaQuery q = ...
Root<Owner> ownerRoot = q.from(Owner.class);
ownerRoot.setAlias("o");
Root<Board> boardRoot = q.from(Board.class);
boardRoot.setAlias("b");
q.where(qb.eq(ownerRoot.get(Owner_.board_id), boardRoot.get(Board_.id));
q.orderBy(qb.asc(boardRoot.get(Board_.cableId)))
 类似资料:
  • 两个数据库表具有外键关系。 它们通过JPA映射到两个实体A和B,但是连接列是从实体中手动删除的,因此在JPA世界中,类A和B是不相关的,您不能通过字段/属性从一个类导航到另一个类。 使用JPA标准API,是否可以创建连接两个表的查询? 我在互联网上找到的所有示例都使用join列来实现目标,但如上所述,它已从代码中删除,因为大多数时候我对A和B之间的关系不感兴趣,而且我担心可能的开销。

  • 我的问题是空值必须是最后一个order by语句。下面是我的代码截图。我使用javax持久性标准生成器。我的问题很复杂。 如何通过criteria builder以零价格完成订单?

  • 您好,我是JPA Spring boot的新手,现在我正在尝试将两个表之间的连接转换为第三个表。所以我有一个医生和病人表,其中有它的属性,一个医生可以检查每个病人,一个病人可以看望每个医生。但是在一次检查中,不能有超过一个病人和一个医生。对于医生,我想保留他们检查过的患者的信息,分别是患者的信息,以及他们检查过的医生的信息。我想创建一个名为DoctorVisit的中间表,其中我有做检查的医生的id

  • 问题内容: 我正在使用JPA(Hibernate作为我的JPA提供程序)。我实际上是在尝试避免hibernate细节并使用JPA规范。我有一个初始化惰性实体的函数。不幸的是,它使用了Hibernate特定的功能。这是我的功能: 是否有任何纯JPA方式初始化实体? 问题答案: 似乎没有一种初始化实体的标准方法。 有一种标准的方法可以检查是否已初始化(完全加载)实体,这是通过PersistenceUn

  • 问题内容: 我正在尝试使以下内容起作用: 导致异常的部分是: 编辑: 经过进一步观察, (在首次致电后,没有)为我完成了这项工作。 问题答案: 看来您无法对查询中的children集合进行排序。在查询之后进行排序,或者在第二个查询中加载子级。 类似的问题和答案在这里

  • 我有一个类似实体的流程,由一个用户创建、更新。当我尝试应用过滤器时。我已经在数据库中创建了外键关系。现在,当我使用JPA规范应用动态过滤器时,我得到了一个异常