June222 / Smart-Factory-Project

0 stars 1 forks source link

OneToMany, ManyToOne Table Mapping #28

Closed June222 closed 8 months ago

June222 commented 8 months ago

Steel 의 Label에 여러가지가 있을 수도 있어 일대다 Mapping을 해야하는데 되지 않음.

June222 commented 8 months ago

중요한 것은 @OneToMany의 'mappedby' 부분

정확히 어떻게 해결된지는 모르겠으나 추측하자면, 원래 Steel Table은 'steel_tb'라는 이름을 가지고 있었음. 1. Table의 이름을 강제하는 부분을 지우고 2. mappedby = 'steel' (Steel의 소문자 형태)

  1. @ ManyToOne (fetch = FetchType.LAZY) 을 진행한 뒤 해결되었음. 해결하는데 도움이 된 링크

Steel 클래스 (1대다에서 1역할)

@Table()
public class Steel {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "STEEL_ID")
    private Integer id;

...

    @OneToMany(mappedBy = "steel", orphanRemoval = true, cascade = CascadeType.ALL)
    private List<SteelLabel> labels = new ArrayList<SteelLabel>();

...
}

## SteelLabel 클래스 (1대다에서 다역할)

```java
@Table(name = "steel_label_tb")
public class SteelLabel {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "LABEL_ID")
    private int id;

    private int label;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn()
    private Steel steel;