How do I convert JSON String
stored in a DB column to a Map<String, ?>
attribute defined in entity class Product
?
I have defined a @ReadingConverter JsonToMapConverter
class and a ProductRepository
. Calling productRepository.findAll()
throws error org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.lang.Object!
@Table("product")
public class Product {
@Id
private BigInteger id;
private String Map<String, ?> metaData;
// Getters / Setters here
}
@ReadingConverter
public class JsonToMapConverter implements Converter<String, Map<String, ?>> {
private static final ObjectMapper objectMapper = new ObjectMapper();
@SneakyThrows
@Override
public Map<String, ?> convert(String s) {
return objectMapper.readValue(s, Map.class);
}
}
@Repository
public interface ProductRepository extends CrudRepository<Product, BigInteger> {}
@SpringBootTest
class ProductTest {
@Autowired
private ProductRepository productRepository;
@Test
public void fetchProducts() {
// Throws org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.lang.Object!
productRepository.findAll();
}
}
mysql> select * from product;
+----+-----------+
| id | meta_data |
+----+-----------+
| 1 | {} |
+----+-----------+