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

如何使用ctiteria API spring data JPA规范定义条件上的多连接?

谷梁楷
2023-03-14

下面是fetch join的代码

public static Specification<Item> findByCustomer(User user) {
    return (root, criteriaQuery, criteriaBuilder) -> {
       root.fetch(User_.address, JoinType.LEFT);
        return criteriaBuilder.equal(root.get(User_.id), 1);
    };
}

上面的代码正在生成下面的查询

共有1个答案

杨骏
2023-03-14
public static Specification<A> findAbyBname(String input) {
        return new Specification<A>() {
            @Override
            public Predicate toPredicate(Root<A> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
                cq.distinct(true);
                Join<A,AB> AjoinAB = root.joinList(A_.AB_LIST,JoinType.LEFT);
                Join<AB,B> ABjoinB = AjoinAB.join(AB_.B,JoinType.LEFT);
                return cb.equal(ABjoinB.get(B_.NAME),input);
            }
        };
    }

我有这样的东西。以下是实体:

@Entity
public class A {
    @Id
    private Long id;
    private String name;
    @OneToMany(mappedBy = "a")
    private List<AB> abList;
}
@Entity
public class B {
    @Id
    private Long id;
    private String name;
    @OneToMany(mappedBy = "b")
    private List<AB> abList;
}
@Entity
public class AB {
    @Id
    private Long id;
    private String name;
    @ManyToOne
    @JoinColumn(name = "a_id")
    private A a;
    @ManyToOne
    @JoinColumn(name = "b_id")
    private B b;
}
 类似资料:
  • 我正在尝试将查询转换为JPA规范,该查询包含带OR条件的连接操作。 以下是查询: 我试图编写一个规范,但在如何将多个列与OR条件连接方面遇到了障碍。 用户实体: 运营实体 我希望有一个规范来取代上面的查询

  • 出于性能考虑,HTML 中不允许使用内联 style,所有样式只能放到 <head> 的 <style mip-custom> 标签里。 正确方式: <head> <style mip-custom> p { color: #00f;} </style> </head> <body> <p>Hello World!</p> </body> 错误方式: <!-- 禁止使用 sty

  • 如何定义条件数组元素?我想做这样的事情: 这按预期工作,并导致,但如果我将设置为

  • 描述我正在处理一个需要JSON到JSON转换的问题,所以我使用Jolt库来解决这个问题。我的输入JSON文档中有一些节点,它们有时可以作为对象数组出现,有时可以作为普通对象出现。我无法定义适用于对象数组和单个对象的Jolt规范。 要求如果节点包含对象数组,则从数组中获取第0个元素并将其映射到输出JSON。 颠簸规格 输入JSON(JSON规范适用于此输入) 输出JSON(获取预期输出) 但是,当患

  • 我有jpa存储库: 和客户规范 通常我是这样取记录的 现在我想按组计算 其中(复杂规范中的标准)按字段1、字段2、字段3分组; 如上所述,如何使用jpaRepository和Custom规范执行此GROUP BY和COUNT 注意:我可以像这样做完整计数 帮助我分组和计数。提前谢谢。

  • 我使用的是SPARK-SQL-2.4.1V和Java1.8。和Kafka版本SPARK-SQL-KAFKA-0-10_2.11_2.4.3。 这会产生以下错误: 类型Dataset中的方法join(Dataset,String)不适用于参数(Dataset,String,String)