package kr.co.vividnext.sodalive.menu import kr.co.vividnext.sodalive.common.BaseEntity import kr.co.vividnext.sodalive.member.MemberRole import javax.persistence.CascadeType import javax.persistence.Column import javax.persistence.Entity import javax.persistence.EnumType import javax.persistence.Enumerated import javax.persistence.FetchType import javax.persistence.JoinColumn import javax.persistence.ManyToOne import javax.persistence.OneToMany @Entity data class Menu( @Column(nullable = false) val title: String, @Column(nullable = false) val route: String, @Enumerated(value = EnumType.STRING) val roles: MemberRole, val orders: Int, val isActive: Boolean ) : BaseEntity() { @ManyToOne(fetch = FetchType.LAZY, cascade = [CascadeType.ALL]) @JoinColumn(name = "parent_id", nullable = true) var parent: Menu? = null @OneToMany(mappedBy = "parent", fetch = FetchType.EAGER) var children: MutableList = mutableListOf() }