Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जेपीए और हाइबरनेट का उपयोग करके जावा इकाई संपत्ति में एक MySQL JSON कॉलम को कैसे मैप करें?

मैं इस तरह से करना पसंद करता हूं:

  • मैप से स्ट्रिंग और इसके विपरीत कनवर्टर (एट्रीब्यूट कन्वर्टर) बनाना।
  • डोमेन (इकाई) वर्ग में mysql JSON कॉलम प्रकार को मैप करने के लिए मानचित्र का उपयोग करना

कोड नीचे है।

@Converter
public class JsonToMapConverter 
                    implements AttributeConverter<String, Map<String, Object>> 
{
    private static final Logger LOGGER = LoggerFactory.getLogger(JsonToMapConverter.class);

    @Override
    @SuppressWarnings("unchecked")
    public Map<String, Object> convertToDatabaseColumn(String attribute)
    {
        if (attribute == null) {
           return new HashMap<>();
        }
        try
        {
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.readValue(attribute, HashMap.class);
        }
        catch (IOException e) {
            LOGGER.error("Convert error while trying to convert string(JSON) to map data structure.");
        }
        return new HashMap<>();
    }

    @Override
    public String convertToEntityAttribute(Map<String, Object> dbData)
    {
        try
        {
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.writeValueAsString(dbData);
        }
        catch (JsonProcessingException e)
        {
            LOGGER.error("Could not convert map to json string.");
            return null;
        }
    }
}
...

@Column(name = "meta_data", columnDefinition = "json")
@Convert(attributeName = "data", converter = JsonToMapConverter.class)
private Map<String, Object> metaData = new HashMap<>();

...

यह समाधान मेरे लिए पूरी तरह से काम करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/mysql अद्यतन विवरण की प्रभावित पंक्तियों की संख्या प्राप्त करें

  2. वुफू की डेटाबेस स्कीमा - आप इसे कैसे डिजाइन करेंगे?

  3. एकाधिक मानों से मेल खाने वाले रिकॉर्ड का समूह खोजें

  4. पहली html पंक्ति प्रदर्शित नहीं हो रही है

  5. क्या मैं INSERT स्टेटमेंट के अंदर सबक्वेरी का उपयोग कर सकता हूं?