And自定義查詢(xún)的用法

2018-10-28 13:03 更新

表person對(duì)應(yīng)的model類(lèi):

@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;
    @ManyToMany(cascade = ALL, fetch = FetchType.LAZY)
    private Set<Address> addresses = new HashSet<>();
        // getter and setter}

表address對(duì)應(yīng)的model類(lèi):

@Entity
@Table(name = "address")
public class Address {
    @Id
    @GeneratedValue
    private Long id;
    private String street;
    private Integer number;
    @ManyToMany(mappedBy = "addresses")
    private Set<Person> owners = new HashSet<>();
       // getter and setter}

數(shù)據(jù)庫(kù)訪問(wèn)PersonRepository類(lèi):

public interface PersonRepository extends JpaRepository<Person, Long>, JpaSpecificationExecutor<Person> {
}

查詢(xún)年齡在10到35之間住在"Chengdu"的人。

public List<Person> findAll(SearchRequest request) {
    Specification<Person> specification = new Specifications<Person>()
        .between("age", new Range<>(10, 35))
        .and(StringUtils.isNotBlank(jack.getName()), ((root, query, cb) -> {
            Join address = root.join("addresses", JoinType.LEFT);
            return cb.equal(address.get("street"), "Chengdu");
        }))
        .build();

    return phoneRepository.findAll(specification);
}

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)