当前位置: 首页 > 知识库问答 >
问题:

Spring数据JPA通过集合查找[重复]

徐学潞
2023-03-14

我正在用Java开发一个使用JPA的路线规划系统。我需要创建一个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个答案

慕祯
2023-03-14

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

@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-方法

 类似资料:
  • 我有实体类用户通过@IdClass注释使用复合键 复合键: 我将Spring数据与hibernate JPA一起使用。因此,我有回购接口: 我想通过具体姓名和姓氏列表从数据库中获取所有活跃用户。例如。我想使用这样的方法 如何通过Spring数据或JPQL查询此需求?

  • 我使用的是spring数据mongodb。 这是我的控制器方法: 控制器: 这里我将字符串列表作为请求参数传递。 我的服务方式是: 存储库代码: 在这里,我在存储库中的查询总是返回空数组[]。我不知道这个查询有什么问题。 我的请求URL是:

  • 在我的遗留应用程序中,我有一个国家表、状态表和一个国家和州的映射表,几乎没有额外的列。 我创建了这样一个实体类。 我的仓库。 我想检查映射表中是否存在状态。以下两种方法都不起作用。 正确的方法是什么?

  • 对于方法,如果我发送空白,它可以工作,但值为null。而且,要搜索的字段太多了。所以我正在寻找一种更好的方法来搜索这样的表单。在Grails框架中,我可以为此创建名称,但在中没有找到更好的方法。 有什么想法吗?谢了。

  • 下面的代码仅供演示。 我的实体bean如下所示 问题:假设在查询时,我只有employeeId和branchName,而我不想在departmentName上放置filter 在这种情况下,如何编写存储库方法 JPA是否有针对此类场景的内置内容?

  • 我对mongo很陌生,我正在尝试用两个查询从收集中获取所有数据,我有条目,每个条目都有startdate。我需要得到所有的数据,首先所有项目的开始日期低于当前日期排序的DESC和跟随其余数据的开始日期大于或等于当前日期排序的asc。我不知道该怎么做。很抱歉我的英语不好,我是新手。 我在下一条路上试过这样做 但如果可能的话,我想通过一个查询来实现