Scenario: 장유유서, 이름 오름차순 (단, 이름 없으면 마지막 출력)


@Test // Sorting
public void testSorting() {
    em.persist(new Slave(null, 100)); // 쇼생크 탈출
    em.persist(new Slave("nigger1", 100));
    em.persist(new Slave("nigger2", 100)); // 이중 정렬을 하려면 첫번째 정렬 조건인 age가 같아야 한다.

    List<Slave> slaves = queryFactory
            .selectFrom(slave)
            .where(slave.age.eq(100))
            .**orderBy**(slave.age.desc(), slave.slaveName.asc().nullsLast())
            .fetch();

    Slave nigger1 = slaves.get(0);
    Slave nigger2 = slaves.get(1);
    Slave fugitiveNigger = slaves.get(2);

    assertThat(slaves).hasSize(3);
    assertThat(nigger1.getSlaveName()).isEqualTo("nigger1");
    assertThat(nigger2.getSlaveName()).isEqualTo("nigger2");
    assertThat(fugitiveNigger.getSlaveName()).isNull(); // nullsLast
}

nullsLast(), nullsFirst() ⇒ null data sequence