如何在Spring Boot CrudRepository中搜索数组

问题描述 投票:2回答:2

说,我有以下实体类:

person.Java

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

  private String[] cars;

  // Constructor, getters and setters
}

和存储库:

person repository.Java

public interface PersonRepository extends CrudRepository<Person, String> {

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

是否有一个方法可以返回所有人,其车载数组包含一个给定的车(上面的String参数)?

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

感谢帮助!

spring-boot spring-data-jpa jpql jpa-criteria
2个回答
2
投票

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

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

  private List<Car> cars;

  // Constructor, getters and setters
}

如果不是,您应该至少将Array更改为List。更改

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)

0
投票

我猜你当前如何存储汽车信息并建议一个可能的解决方案:

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

  @Column
  private String person_name;
}

public interface CarRepository extends JpaRepository<Car, String> {
    //Result will have all cars with the person_name identifying the Person @Entity
    List<Car> findByName(String name);
}
© www.soinside.com 2019 - 2024. All rights reserved.