说明如何使用JpaRepository和嵌套的对象列表进行搜索?
有一个PersonRepository
和Person
实体, Person
类包含List<Qualification>
。 Qualification
类有3个简单的字段。
我尝试添加自定义方法@Query
注释和使用JPQL得到的结果,但Qualification
类领域是不可用于操纵JPQL因为库本身包含List<Qualification>
代替的Qualification
只是一个简单的领域。
如何通过这些Qualification的嵌套字段进行搜索?
查询
现在我需要找人实体的列表,其中合格的experienceInMonths大于3小于9和资格的名字字段='Java的。
代码
Person.java
@Data
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
@NotEmpty
@Size(min = 2)
private String name;
@NotEmpty
@Size(min = 2)
private String surname;
@ElementCollection(targetClass = java.util.ArrayList.class, fetch = FetchType.EAGER)
private List<Qualification> qualifications = new ArrayList<>();
}
PersonRepository.java
@Repository
public interface PersonRepository extends JpaRepository<Person, String> {
}
Qualification.java
@Data
@AllArgsConstructor
public class Qualification implements Serializable {
@Id @GeneratedValue
private String id;
private String name;
private String experienceInMonths;
}
编辑:不重复的this post,因为这里是嵌套对象的集合。不只是单一的参考。
的可能的复制[春季数据JPA找到嵌入对象的属性(HTTPS ://stackoverflow.com/questions/24441411/spring-data-jpa-find-by-embedded-object-property) –
正如在编辑帖子中提到的,这个问题并没有相应的提出答案。正如你可以在粘贴的代码中看到的那样,对象的'List'有一个问题 - 不仅仅是其中的一个。 – DevDio