gpt4 book ai didi

java - 标准 API : Order/Select by implicit related table

转载 作者:行者123 更新时间:2023-11-29 20:58:42 26 4
gpt4 key购买 nike

我尝试构建一个提供以下功能的 CriteriaQuery:

我有三个带有以下字段的表:

表_a:

id, name_a

表_b:

id, name_b

表_ab:

id_a, id_b

现在我想获取 table_a 中的所有元素,并按 table_b 中相应元素的 name_b 字段排序。

结果应该是 JpaRepository 中的使用规范。我尝试使用联接,但我停留在这一点上,如何组合联接:

Specification<TableA> specification = (root, query, cb) -> {
CriteriaQuery<TableAb> abQuery = cb.createQuery(TableAb.class);
CriteriaQuery<TableB> bQuery = cb.createQuery(TableB.class);

Root<TableAb> abRoot = abQuery.from(TableAb.class);
Join<TableAb, TableA> aJoin = abRoot.join("tableA");
Join<TableAb, TableB> bJoin = abRoot.join("tableB");

//combine joins

query.orderBy(cb.asc(/* Expression to order by */));
return cb.conjunction();
};

在我看来,主要问题是没有从 table_a 到 table_b 的“路径”,但我明确不想在 table_a 到 table_b 内部有任何引用。

最佳答案

由于您使用的是 Spring Data JPA ,因此您可以创建一个带有方法的接口(interface),如下所示:

public interface TableABRepository extends Repository<TableAB, Long> {

public List<TableAB> findAllByOrderByTableB();

}

假设您的 TableAB 类是这样的:

    class TableAB {
TableA tableA;
TableB tableB;
}

Thak 方法将返回 table_ab 中按 name_b 字段排序的所有元素。

之后,您只需从 TableAB 返回的列表中获取 TableA 元素即可。

关于java - 标准 API : Order/Select by implicit related table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37410000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com