use*_*048 3 jpql spring-data-jpa spring-boot jpa-criteria
说,我有以下实体类:
人.java
@Entity
public class Person {
@Id
private String name;
private String[] cars;
// Constructor, getters and setters
}
Run Code Online (Sandbox Code Playgroud)
和存储库:
PersonRepository.java
public interface PersonRepository extends CrudRepository<Person, String> {
// this is unclear!
List<Person> getAllByCars...(String car)
}
Run Code Online (Sandbox Code Playgroud)
是否有一种方法可以返回所有人员,其汽车数组包含一个给定的汽车(上面的 String 参数)?
对我来说,似乎所有支持的 JPA 关键字都只能处理单个元素,而不能处理数组。
感谢帮助!
理想情况下,您应该像这样将汽车声明为一个单独的实体
@Entity
public class Person {
@Id
private String name;
private List<Car> cars;
// Constructor, getters and setters
}
Run Code Online (Sandbox Code Playgroud)
如果不是,您至少应该将 Array 更改为 List。改变
private String[] cars;
Run Code Online (Sandbox Code Playgroud)
到
@ElementCollection
private List<String> cars;
Run Code Online (Sandbox Code Playgroud)
然后你必须写一个这样的查询
@Query("select p from Person p WHERE :car in elements(p.cars)")
List<Person> getAllByCars...(@Param("car") String car)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4558 次 |
| 最近记录: |