spring-boot - 如何在 Spring Boot CrudRepository 中搜索数组

标签 spring-boot spring-data-jpa jpql jpa-criteria

比如说,我有以下实体类:

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
}

如果不是,您至少应该将 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)

关于spring-boot - 如何在 Spring Boot CrudRepository 中搜索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424575/

相关文章:

Spring Data JPA 使用 SpEL 语法有条件地构建查询

java - Maven 将 jar 添加到 war 中,但依赖项中不存在 :tree

java - 如何在 Spring-boot 中为 REST API 的每个请求创建唯一的 ID?

Spring Cloud : Eureka Client registration/deregistration cycle

java - MVC Spring Boot 和 JPA 关系

java - JPA 属性表达式与使用 'In'

java - Spring 启动 JPA : Passing Multiple Values for the Same Parameter (JPQL)

java - 在 JpaRepository 的查询中执行 PostGIS 函数

json - 在Spring Boot、Hibernate中使用@Query注解查询JSON格式(键值对)结果

java - JPQL 查询不为空