공통 : 엔티티 간에 상속을 받는 경우
부모 엔티티에만 지정해도 되는 어노테이션
부모-자식 둘다 지정해야하는 어노테이션이 있다.
부모 엔티티 클래스에 꼭 지정해야한다.
@MappedSuperclass
@SuperBuilder
@NoArgsConstructor(access = PROTECTED)
@Getter
@EqualsAndHashCode
@ToString
public class BaseEntity {
@Id
@GeneratedValue(strategy = IDENTITY)
@EqualsAndHashCode.Include
private Long id;
}
자식 엔티티에서 @ToString 어노테이션에 callSuper = true 옵션을 주어야 한다.
부모 엔티티에서는 그냥 @ToString 쓰면 됨.
@ToString(callSuper = true)
public class Member extends BaseEntity
부모 엔티티와 자식 엔티티에서
@Builder 가 아닌 @SuperBuilder를 사용해야 한다.
public class Article extends BaseEntity
@Entity
@SuperBuilder
@AllArgsConstructor(access = PROTECTED)
@NoArgsConstructor(access = PROTECTED)
@Setter
@Getter
@ToString(callSuper = true)
public class Article extends BaseEntity {
@ManyToOne(fetch = LAZY)
private Member author;
private String title;
private String body;
}