微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 JPA 查询将集合与实体内的集合进行比较

如何解决使用 JPA 查询将集合与实体内的集合进行比较

我正在尝试使用字符串集合对实体集合字段进行搜索。这是我目前所拥有的:

产品

@Entity(name = "product")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "product_category",joinColumns = @JoinColumn(name = "product_id"),inverseJoinColumns = @JoinColumn(name = "category_name")
    )
    private Set<Category> categories;
}

类别

@Entity(name  = "category")
public class Category {
    @Id
    @Column(columnDeFinition = "VARCHAR(40)")
    private String name;

    public Category(String categoryName) {
        name = categoryName;
    }

    public Category() {
    }
}

过滤器集合示例:

Set<String> categories = new HashSet<Integer>(Arrays.asList("new","sale","bestseller"));

我还想传递与集合元素相同类型的对象集合,其中一个字段被分配了所需的值。但我认为这没有意义,因为我仍然只需要比较其中的一个领域:

Set<String> categories = new HashSet<Integer>(Arrays.asList(new Category("new"),new Category("sale"),new Category("bestseller")));

ProductRepository 中的方法

@Query("SELECT m FROM meet m WHERE (:categories IS EMPTY OR :categories IN m.categories")
Page<Meet> findAllByFilters(Pageable pageable,@Param("categories") Set<String> categories);

方法绝对不适合这种情况,因为我们假设集合是单个元素,而不是按元素比较每个集合。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。