Spring Data JPA findBy一个集合[重复]
Posted
技术标签:
【中文标题】Spring Data JPA findBy一个集合[重复]【英文标题】:Spring Data JPA findBy a collection [duplicate] 【发布时间】:2019-05-06 06:09:10 【问题描述】:我正在使用 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 并以某种方式迭代,以通过集合查找实体?
【问题讨论】:
为什么不起作用?根据文档,它应该。 你能完整展示你的 City 类吗? 城市是否完全匹配?还是它们是子集? 【参考方案1】:您可以更改 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
【讨论】:
以上是关于Spring Data JPA findBy一个集合[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data JPA 之间 findBy / findAllBy 的区别
spring data jpa getOne 抛出 LazyInitializationException 和 findBy 不