我正在使用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并以某种方式进行迭代以通过集合查找实体?
答案 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