Spring Data JPA findBy 集合

Fuu*_*ury 8 java spring jpql spring-data-jpa

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

@Entity
public class Route {

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

@Entity
public class City {
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试了,但并不奇怪它不起作用,如下:

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

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

Ste*_*cek 7

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

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

那么它应该工作。但是请注意,这不是完全匹配。检查更多

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