簡體   English   中英

我有一個 Querydsl 問題。 (壯舉。BooleanBuilder)

[英]I have a Querydsl question. (Feat. BooleanBuilder)

@Test
void testDepartment() throws Exception {

    String nameParam1 = "ComputerScience";
    String nameParam2 = "Department of Mathematics";
    String nameParam3 = "Department of Music";
    String nameParam4 = "Department of Language and Literature";
    String locParam = "null";

    List<Department> result = seacrhDepartment(nameParam1, nameParam2, nameParam3, nameParam4, locParam);
    assertThat(result.size()).isEqualTo(0);

}

private List<Department> seacrhDepartment(String nameParam1, String nameParam2, String nameParam3, String nameParam4, String locParam) {

    BooleanBuilder builder = new BooleanBuilder();

    if (nameParam1 != null) {
        builder.and(department.name.eq(nameParam1));
    }

    if (nameParam2 != null) {
        builder.and(department.name.eq(nameParam2));
    }

    if (nameParam3 != null) {
        builder.and(department.name.eq(nameParam3));
    }

    if (nameParam4 != null) {
        builder.and(department.name.eq(nameParam4));
    }

    if (locParam != null) {
        builder.and(department.name.eq(locParam));
    }

    return queryFactory
            .selectFrom(department)
            .where(builder)
            .fetch();
}





@BeforeEach
public void before() {
    queryFactory = new JPAQueryFactory(em);
    Department department1 = new Department("ComputerScience");
    Department department2 = new Department("Department of Mathematics");
    Department department3 = new Department("Department of Music");
    Department department4 = new Department("Department of Language and Literature");
    em.persist(department1);
    em.persist(department2);
    em.persist(department3);
    em.persist(department4);

}

我預先輸入了數據.. 但是為什么必須在這里傳遞 isEqual(0) ..? 由於所有條件都設置為builder.and,設置為isEqualTo(5) 時它不會通過嗎?

我應該使用什么測試來搜索單詞 com 並獲得計算機科學系?

沒有Department出滿足所有過濾器。 您可能想使用builder.or而不是builder.and

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM