带有@ CollectionTable / @ ElementCollection的Spring Data JPA + JPQL-通过枚举集合进行条件搜索

时间:2019-01-16 12:56:11

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

我有一个EntityEnum -> String这样的@CollectionTable

@Entity
@Table(name = "place")
public class Place {

    //....

    @Enumerated(EnumType.STRING)
    @CollectionTable(name = "general_place_type", joinColumns = @JoinColumn(name = "place_id"))
    @Column(name = "place_type")
    @ElementCollection(fetch = FetchType.EAGER)
    private Set<GeneralPlaceType> types;

    //....
}

我的Spring Data Repository中也有以下查询方法:

@Query("SELECT p FROM Place p WHERE ...... AND :type MEMBER OF p.types AND ......")
Page<Place> getAllByGeneralSingleType(@Param("type") GeneralPlaceType type, Pageable pageable);

//Conditions non-related to question topic are marked with dots

实际上,它可以很好地工作并且可以完成工作-查找所有类型包含传入类型的地方。

我正在考虑采用类似(?)方法来汇总具有搜索条件的一个关键条件的地点:每个地点应包含来自传入的 至少一个 类型Collection中的GeneralPlaceType

//It might look like this
Page<Place> getAllByGeneralMultipleTypes(@Param("types") Set<GeneralPlaceType>, Pageable pageable);

如何使用JPQL @Query甚至是纯Spring Data Repository方法来实现该功能?

0 个答案:

没有答案