티스토리 뷰

entity에 enum list를 정의하고 싶을 때 사용!

1. enum 생성

public enum IndicatorReportType {
    ROE, TOTAL_REVENUE, TOTAL_EQUITY
}

2. Converter를 만들고

public class ReportListConverter implements AttributeConverter<List<IndicatorReportType>, String> {
    private static final ObjectMapper mapper = new ObjectMapper()
        .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
        .configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);

    @Override
    public String convertToDatabaseColumn(List<IndicatorReportType> attribute) {
        try {
            return mapper.writeValueAsString(attribute);
        } catch (JsonProcessingException e) {
            throw new IllegalArgumentException();
        }
    }

    @Override
    public List<IndicatorReportType> convertToEntityAttribute(String dbData) {
        try {
            return mapper.readValue(dbData, new TypeReference<>() {
            });
        } catch (IOException e) {
            throw new IllegalArgumentException();
        }
    }
}

3. entity에 정의하고 사용!

@Getter
@Entity
@Table(name = "favorites")
@Builder
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Favorites {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    ...

    @Convert(converter = ReportListConverter.class)
    private List<IndicatorReportType> indicatorReportList;
}

'spring boot > snippets' 카테고리의 다른 글

mocking 하는 방법  (0) 2021.12.22
jpa에서 json column 사용하기  (0) 2021.12.22
jpa repository만 테스트  (0) 2021.12.22
jpa entity에서 column 정의  (0) 2021.12.22
n+1 이슈 피하기  (0) 2021.12.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday