简体   繁体   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);

}

I pre-entered the data.. But Why does isEqual(0) have to be passed here..?我预先输入了数据.. 但是为什么必须在这里传递 isEqual(0) ..? Since all conditions were set to builder.and, wouldn't it pass when set to isEqualTo(5)?由于所有条件都设置为builder.and,设置为isEqualTo(5) 时它不会通过吗?

And what test should I use to search for the word com and get a computerscience department?我应该使用什么测试来搜索单词 com 并获得计算机科学系?

There is no Department that satisfied all filters.没有Department出满足所有过滤器。 You probably want to use builder.or instead of builder.and .您可能想使用builder.or而不是builder.and

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM