首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring(规范)-如何使用manyToMany关系和集合创建条件生成器

Spring(规范)-如何使用manyToMany关系和集合创建条件生成器
EN

Stack Overflow用户
提问于 2020-03-02 02:35:21
回答 1查看 163关注 0票数 0

我有一个问题,那就是找到一个具有对象列表和@ManyToMany关系的spring规范的解决方案。我有employee实体类,它有技能列表:

代码语言:javascript
复制
@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;
}

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

代码语言:javascript
复制
public static Specification<EmployeeEntity> employeeHasSkills(List<String> skills) {
    return (root, query, cb) ->{
        return root.get("skills").get("skillName").in(skills);
    };
}

技能列表的字符串形式为skillNames。所以我试着为skillName绘制技能图。Ofc这不起作用。有什么想法吗?我正在寻找没有JPA元模型的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2020-03-02 22:52:11

root.get("skills")返回List<Skill>。它没有skillName

你应该试试这样的东西

代码语言:javascript
复制
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);
    };
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60478452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档