Я просто пытаюсь вставить значение json в h2. Затем я хочу вернуть это json значение как объект с конвертером гибернации. Но ошибка выглядит следующим образом:
Мой запрос на вставку:
INSERT INTO log(
id, activities, date)
VALUES (1, '[{"actionType": "EMAIL"}]', '2019-12-10 00:00:00');
Когда я пытаюсь вернуть это поле конвертером гибернации, поле поставляется с кавычкой:
"[{"actionType": "EMAIL"}]"
Но это должно быть:
[{"actionType": "EMAIL"}]
org.springframework.dao.InvalidDataAccessApiUsageException: данное строковое значение: "[{" actionType ":" EMAIL "}]" не может быть преобразовано в Json объект; вложенное исключение: java .lang.IllegalArgumentException: данное строковое значение: "[{" actionType ":" EMAIL "}]" не может быть преобразовано в Json object
Entity:
@Entity
@Table(name = "log")
public class RuleLog
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Convert(converter = LogActionConverter.class)
private List<LogActivity> activities;
@Column(name = "date")
private LocalDateTime date;
}
Конвертер:
public class LogActionConverter implements AttributeConverter<List<LogActivity>, String>
{
private static final Gson gson = new Gson();
@Override
public String convertToDatabaseColumn(List<LogActivity> attribute)
{
try
{
if (attribute == null)
{
return null;
}
else
{
return gson.toJson(attribute);
}
}
catch (Exception ex)
{
return null;
}
}
@Override
public List<LogActivity> convertToEntityAttribute(String dbData)
{
try
{
if (dbData == null)
{
return null;
}
else
{
return gson.fromJson(dbData, List.class);
}
}
catch (Exception ex)
{
return null;
}
}
}