如何解决使用 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 举报,一经查实,本站将立刻删除。