说,我有以下实体类:
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关键字只能处理单个元素,而不能处理数组。
感谢帮助!
理想情况下,您应该像这样将汽车声明为单独的实体
@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)