我有一个表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);