spring boot/snippets
entity에 enum list 정의하기
lingi04
2021. 12. 22. 23:13
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;
}