如何根据一对多和多对一关系表进行过滤 Spring JPA



我有一个表Student,它与Address表是一对多关系,Address与Student表有多对一关系。

public class Student{
@Id
@Column(name = "stud_id", nullable = false)
private String stud_id;
@Column(name = "stud_name", nullable = false)
private String stud_name;
@OneToMany(mappedBy = "student")
private List<Address> addresses;
}
public class Address{
@Id
@Column(name = "address_id", nullable = false)
private String address_id;
@Column(name = "address_name", nullable = false)
private String address_name;
@ManyToOne
@JoinColumn(name = "stud_id", nullable = false)
private Student student;
}

我该如何过滤"something"中的getAllStudentaddress_name之类的内容。预期的返回应该是Student对象,这样我就可以遍历到Address,该Address使用带有SpringConvention的Spring JPA存储库或@Query过滤为"Something"。请帮助

如果您有一组addressNames要根据进行筛选,请尝试此操作

@Query("select a.student from Address a where a.address_name in (?1)")
List<Student> findStudentsByAddressNameIn(List<String> addressNames);

或者如果您想按address_name='something'进行筛选

@Query("select a.student from Address a where a.address_name = ?1")
List<Student> findStudentsByAddressName(String addressNameFilter);

或者,如果要按address_name包含"something"进行筛选,请将addressNameFilter设置为"%"+addressNameFilter+"%"并使用

@Query("select a.student from Address a where a.address_name like ?1")
List<Student> findStudentsByAddressNameLike(String addressNameFilter);

最新更新