小编典典

如何在Spring Boot CrudRepository中搜索数组

spring-boot

说,我有以下实体类:

Person.java

@Entity
public class Person {
  @Id
  private String name;

  private String[] cars;

  // Constructor, getters and setters
}

和存储库:

PersonRepository.java

public interface PersonRepository extends CrudRepository<Person, String> {

   // this is unclear!
   List<Person> getAllByCars...(String car)
}

有没有一种方法可以返回所有人,他们的汽车数组包含一个给定的汽车(上面的String参数)?

对我来说,似乎所有受支持的JPA关键字只能处理单个元素,而不能处理数组。

感谢帮助!


阅读 286

收藏
2020-05-30

共1个答案

小编典典

理想情况下,您应该像这样将汽车声明为单独的实体

@Entity
public class Person {
  @Id
  private String name;

  private List<Car> cars;

  // Constructor, getters and setters
}

如果不是,则至少应将“数组”更改为“列表”。更改

private String[] cars;

@ElementCollection
private List<String> cars;

然后,您必须编写这样的查询

@Query("select p from Person p WHERE :car in elements(p.cars)")
List<Person> getAllByCars...(@Param("car") String car)
2020-05-30