Join关联ManyToOne查询
表person对应的model类:
表phone对应的model类:@Entity @Table(name = "person") public class Person { @Id @GeneratedValue private Long id; private Integer age; private String name; @Column(name = "nick_name") private String nickName; private String company; private Date birthday; @OneToMany(cascade = ALL) private Set<Phone> phones = new HashSet<>();// getter and setter}
数据库访问PhoneRepository类:@Entity @Table(name = "phone") public class Phone { @Id @GeneratedValue private Long id; private String number; private String brand; @ManyToOne private Person person;// getter and setter}
public interface PhoneRepository extends JpaRepository<Phone, Long>, JpaSpecificationExecutor<Phone> {
}查询姓名为"Jack",用的手机为"HuaWei"的人。public List<Phone> findAll(SearchRequest request) {
Specification<Phone> specification = new Specifications<Phone>()
.eq(StringUtils.isNotBlank(request.getBrand()), "brand", "HuaWei")
.eq(StringUtils.isNotBlank(request.getPersonName()), "person.name", "Jack")
.build();
return phoneRepository.findAll(specification);
}