Skip to content

orphanRemoval 테스트 문제 #1

@jyami-kim

Description

@jyami-kim

https://jyami.tistory.com/22 - 혼자 정리한 자료 : 제일 아랫단

링크 주소

[Parent.java] https://github.com/mjung1798/spring-boot/blob/master/jpa-lab/src/main/java/com/jyami/jpalab/domain/Parent.java

[Child.java] https://github.com/mjung1798/spring-boot/blob/master/jpa-lab/src/main/java/com/jyami/jpalab/domain/Child.java

[테스트코드]https://github.com/mjung1798/spring-boot/blob/master/jpa-lab/src/test/java/com/jyami/jpalab/domain/ParentTest.java

[Parent.java]

@Entity
@NoArgsConstructor
@Getter
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(mappedBy = "parent", orphanRemoval = true)
    private List<Child> childList = new ArrayList<>();

    @Builder
    public Parent(String name) {
        this.name = name;
    }

}

[Child.java]

@Entity
@Getter
@NoArgsConstructor
public class Child {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @ManyToOne
    @JoinColumn
    private Parent parent;

    @Builder
    public Child(String name, Parent parent) {
        this.name = name;
        this.parent = parent;
        parent.getChildList().add(this);
    }
}

[테스트 코드]

@Test
public void Parent컬렉션의_child를지웠을_때(){
    Parent parent1 = Parent.builder()
        .name("parent")
        .build();

    Child child1 = Child.builder()
        .parent(parent1)
        .name("child1")
        .build();

    Child child2 = Child.builder()
        .parent(parent1)
        .name("child2")
        .build();

    parentRepository.save(parent1);
    childRepository.save(child1);
    childRepository.save(child2);

    entityManager.clear();

    Parent parent = parentRepository.findById(2L).get();
    parent.getChildList().remove(0);
    parentRepository.save(parent);

    entityManager.clear();
    Parent findParent = parentRepository.findById(2L).get();
    assertThat(findParent.getChildList().size()).isEqualTo(1);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions