Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara memetakan kolom MySQL JSON ke properti entitas Java menggunakan JPA dan Hibernate

Saya lebih suka melakukan cara ini:

  • Membuat konverter (konverter atribut) dari Peta ke String dan sebaliknya.
  • Menggunakan Peta untuk memetakan tipe kolom JSON mysql di kelas domain (entitas)

Kodenya ada di bawah.

@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<>();

...

Solusi ini sangat cocok untuk saya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan:pilih perintah ditolak untuk pengguna '<userid>'@'<ip-address>' untuk tabel '<table-name>'

  2. Host server tidak dikenal PHP MySql

  3. Dua Nilai yang Dihasilkan dalam Ajaran

  4. Bagaimana cara mengubah tipe data untuk kolom di MySQL?

  5. MySQL - panjang() vs char_length()