【问题标题】:Spring(Specification) - How to create Criteria Builder with manyToMany relationship and collectionSpring(规范) - 如何创建具有多对多关系和集合的 Criteria Builder
【发布时间】:2020-06-14 03:15:13
【问题描述】:

我很难找到具有对象列表和@ManyToMany 关系的弹簧规范的解决方案。 我有具有技能列表的员工实体类:

@Entity
public class EmployeeEntity {
    @ManyToMany
    @JoinTable(name = "employee_skill",
        joinColumns = {@JoinColumn(name = "employee_id")},
        inverseJoinColumns = {@JoinColumn(name = "skill_id")})
    private List<SkillEntity> skills;
}

public class SkillEntity {
    @Column(name  = "skill_name")
    private String skillName;
}

我想查找具有存储在我的自定义技能列表中的技能的员工:

public static Specification<EmployeeEntity> employeeHasSkills(List<String> skills) {
    return (root, query, cb) ->{
        return root.get("skills").get("skillName").in(skills);
    };
}

技能列表中的技能名称为字符串。所以我尝试为 SkillName 映射技能。 Ofc 这不起作用。 任何想法?我正在寻找没有 JPA 元模型的解决方案。

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa spring-data


    【解决方案1】:

    root.get("skills") 返回List&lt;Skill&gt;。它没有skillName

    你应该试试这样的

    public static Specification<EmployeeEntity> employeeHasSkills(List<String> skills) {
        return (root, query, cb) ->{
            Join<EmployeeEntity, SkillEntity> skill = root.join("skills", JoinType.LEFT);
            return skill.get("skillName").in(skills);
        };
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 2017-08-19
      • 2015-10-28
      • 2017-01-09
      • 2021-03-04
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      相关资源
      最近更新 更多