Я пытаюсь сохранить объект java в столбце jsonb в базе данных Postgres, используя eclipselink, но в данный момент я застрял при написании соответствующего конвертера. Кто-нибудь может мне помочь или дать хороший пример сохранения типов jsonb в java с eclipselink?
Вот код модели:
@Entity
@Table(name = TABLE_NAME)
public class SystemEventModel implements Serializable {
public static final String TABLE_NAME = "system_event";
@Id
@Column(name = "id")
private Long id;
@Lob
@Column(name = "event_data", columnDefinition = "jsonb")
private JsonObject eventData;
public SystemEventModel(JsonObject eventData) {
this.eventData = eventData;
}
}
В настоящее время я просто получаю сообщение об ошибке "ОШИБКА : столбец "event_data" имеет тип jsonb, но выражение имеет тип bytea ", когда я пытаюсь сохранить этот объект. Я знаю, почему это так, но я не знаю, как написать конвертер, так как я не понимаю, в какой тип мне следует конвертировать тип JsonObject, чтобы он передавался как jsonb.
Вот что Я имею в виду в этом примере конвертера:
@Converter(autoApply = true)
public class AppAttributeTypeAttributeConverter implements AttributeConverter<JsonObject, ???> {
@Override
public ??? convertToDatabaseColumn(JsonObject eventData) {
return ???;
}
@Override
public JsonObject convertToEntityAttribute(??? eventData) {
return ???;
}
}
А вот фрагмент для сохранения:
String details = "{ \"pressed\": \"yes\", \"isDefault\": \"true\", \"type\": \"BUTTON\"}";
JsonReader jsonReader = Json.createReader(new StringReader(details));
JsonObject jsonObject = jsonReader.readObject();
jsonReader.close();
SystemEventModel eventModel = new SystemEventModel(jsonObject);
em.persist(eventModel);
Заранее спасибо!