BookStatus
@Data
public class BookStatus{
private int code;
private String description;
public BookStatus(int code){
this.code = code;
this.description = parseDescription(code);
}
public boolean isDisplayed(){
return code == 200;
}
private String parseDescription(int code){
switch(code){
case 100:
return "판매종료";
case 200:
return "판매중";
case 300:
return "판매보류";
default:
return "미지원";
}
}
}
Book Entity
@OneToMany
@JoinColumn(name="book_id")
@ToString.Exclude
private List<BookAndAuthor> bookAndAuthors = new ArrayList<>();
private boolean deleted;
@Convert(converter = BookStatusConverter.class)
private BookStatus status; //판매상태 ---> 에러발생
//BookStatus가 Entity의 속성으로 추가할 수 없다는 에러가 발생
public void addBookAndAuthors(BookAndAuthor... bookAndAuthors){
Collections.addAll(this.bookAndAuthors, bookAndAuthors);
}
}
domain - coverter - BookStatusConverter.java 생성
@Converter
public class BookStatusConverter implements AttributeConverter<BookStatus, Integer>{
//AttirvuteConverter<X, Y> 에서
// X => Entity의 Attribute 타입 (BookStatus)
// Y => DB 컬럼에서의 타입 (Integer)
@Override
public Integer convertToDatabaseColumn(BookStatis attrivute){
return attrivute.getCode();
}
@Override
public BookStatus convertToEntityAttribute(Integer dbData){
//nullable 하기 때문에 nullPointException에 대비 해 주어야 한다.
return dbData != null ? new BookStatus(dbData) : null;
}
}
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.