- ManyToOne, OneToMany
—> 이 릴레이션은 쌍으로 쓰게 되어 있는데, ManyToOne 데코레이션을 쓰는 쪽에 ForeignKey가 생성된다. 보통 OneToMany 데코를 쓰는 쪽이 부모(주체)가 되고 ManyToOne 데코를 쓰는 쪽이 자식(객체)가 된다.
ex) Author(글쓴이): OneToMany , Posting(글): ManyToOne
- 한 글쓴이는 자신의 아이디로 많은 글을 올릴수 있지만(Posting), 한 포스팅 아이디는 (글을 나눠서 공동으로 쓰지 않는한) 한 글쓴이로 밖에 매핑이 안된다.
- JoinColumn은 객체쪽에서 지정을 해준다.
- CASCADE 옵션을 줄때는, 객체 쪽(Posting)에 { onDelete: “CASCADE”}, 주체 쪽(Author)에 {cascade:true} 를 준다. 부모가 삭제 될때 자식이 삭제되는거지, 자식이 삭제되는건 부모에 아무 영향을 안끼친다.
ex)
@Entity()
class Book extends BaseEntity {
@ManyToOne(() => Author, (author) => author.books, {
onDelete: 'CASCADE',
})
public author?: Author
}
@Entity()
class Author extends BaseEntity {
@OneToMany(() => Book, (book) => book.author, {
cascade: true,
})
public books: Book[];
}
ex)
Author > Posting > Reply
위처럼 객체가 여러개 일경우에는 최상위 주체에만 {onDelete:'CASCADE'}
'NEW(스크립트용)' 카테고리의 다른 글
A function whose declared type is neither 'void' nor 'any' must return a value.137 async addPosting(files, req: PostingDto): Promise<CoreOutput> (0) | 2022.07.26 |
---|---|
any를 활용하여 database 내부 value 값이 array 일 때 filtering (0) | 2022.07.25 |
특정 페이지에서 새로고침 (0) | 2022.07.06 |
position:sticky (0) | 2022.06.30 |
video full screen 반응형 (0) | 2022.06.29 |