Spring Data JPA find通过集合

时间:2018-12-04 18:29:08

标签: java spring spring-data-jpa jpql

我正在使用JPA开发Java中的路由计划系统。 我需要创建一个findBy方法,以通过包含其的城市列表查找路线。 这是课程:

@Entity
public class Route {

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<City> cities = new ArrayList<>();
    .
    .
}

@Entity
public class City {
    .
    .
}

现在,我尝试了以下操作,但并不奇怪,该操作无效:

@Repository
public interface RouteRepository extends JpaRepository<Route, Long> {
    Optional<Route> findByCities(List<City> city);
}

是否有使用JPA的简便方法,还是我必须编写一个困难的@Query并以某种方式进行迭代以通过集合查找实体?

1 个答案:

答案 0 :(得分:0)

您可以在RouteRepository中更改方法的签名,以使用IN运算符。

@Repository
public interface RouteRepository extends JpaRepository<Route, Long> {
    Optional<Route> findByCitiesIn(List<City> cities);
}

然后它应该可以工作。但是请注意,这并非完全匹配。 检查更多

https://docs.spring.io/spring-data/jpa/docs/2.1.x/reference/html/#jpa.query-methods