如何在JPA中使用Postgres JSONB数据类型?

如何在JPA中使用Postgres JSONB数据类型?,第1张

如何在JPA中使用Postgres JSONB数据类型

所有的答案都帮助我达成了最终的解决方案,该解决方案可以用于JPA,而不是专门用于Eclipselink或Hibernate。

import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;import java.io.IOException;import javax.json.Json;import javax.json.JsonObject;import javax.persistence.Converter;import org.postgresql.util.PGobject;@Converter(autoApply = true)public class JsonConverter implements javax.persistence.AttributeConverter<JsonObject, Object> {  private static final long serialVersionUID = 1L;  private static ObjectMapper mapper = new ObjectMapper();  @Override  public Object convertToDatabaseColumn(JsonObject objectValue) {    try {      PGobject out = new PGobject();      out.setType("json");      out.setValue(objectValue.toString());      return out;    } catch (Exception e) {      throw new IllegalArgumentException("Unable to serialize to json field ", e);    }  }  @Override  public JsonObject convertToEntityAttribute(Object dataValue) {    try {      if (dataValue instanceof PGobject && ((PGobject) dataValue).getType().equals("json")) {        return mapper.reader(new TypeReference<JsonObject>() {        }).readValue(((PGobject) dataValue).getValue());      }      return Json.createObjectBuilder().build();    } catch (IOException e) {      throw new IllegalArgumentException("Unable to deserialize to json field ", e);    }  }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5020512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存