티스토리 뷰

list형 json

  1. custom converter 사용

    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import javax.persistence.AttributeConverter;  
    import java.io.IOException;  
    import java.util.List;
    
    public class StringListConverter implements AttributeConverter<List, 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<String> attribute) {
            try {
                return mapper.writeValueAsString(attribute);
            } catch (JsonProcessingException e) {
                throw new IllegalArgumentException();
            }
        }
    
        @Override
        public List<String> convertToEntityAttribute(String dbData) {
            try {
                return mapper.readValue(dbData, List.class);
            } catch (IOException e) {
                throw new IllegalArgumentException();
            }
        }
    }
  1. 엔티티에 json column 정의하기

     @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 = StringListConverter.class)
         @Column(columnDefinition = "json")
         private List<String> tickerList;
     }

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

Spying 하는 방법  (0) 2021.12.22
mocking 하는 방법  (0) 2021.12.22
entity에 enum list 정의하기  (0) 2021.12.22
jpa repository만 테스트  (0) 2021.12.22
jpa entity에서 column 정의  (0) 2021.12.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday