JPA JSON Conversion - PullRequest
       7

JPA JSON Conversion

0 голосов
/ 07 января 2019

Я работаю с проектом JPA, который использует несколько сущностей, Event - это класс, который содержит запрашиваемую сущность и действие, у меня есть преобразователь, который сериализует полезную нагрузку как json, и я пытаюсь написать логику для десериализации в соответствии с сущностью введите, например, Пользователь / Роль / Привилегия

    <entity class="core.model.Event">
    <table name="EVENTS"></table>
    <attributes>
        <basic name="mid">
            <column column-definition="BINARY(16)" />
        </basic>
        <basic name="exception">
            <column column-definition="json" />
            <convert
                converter="services.event.repo.ExceptionJsonConverter" />
        </basic>            
        <basic name="payload">
            <column column-definition="json" />
            <convertconverter="services.user.PayloadJsonConverter" />
        </basic>
    </attributes>
</entity>

public class Event extends BaseModel<UUID> {

private UUID mid;

private String command;

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
private BaseModel payload;

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
private ServiceException exception;

}

public class PayloadJsonConverter implements AttributeConverter<User, String> {

private static final ObjectMapper mapper = new ObjectMapper();

public PayloadJsonConverter() {
    mapper.setSerializationInclusion(Include.ALWAYS);
}

@Override
public String convertToDatabaseColumn(User model) {

    try {
        log.trace("Mapping ORM {}", model);
        return mapper.writeValueAsString(model);
    } catch (JsonProcessingException ex) {
        return null;
    }
}

@Override
public User convertToEntityAttribute(String dbData) {
    try {
        log.debug("Converting to Model {}", dbData);

        User model = mapper.readValue(dbData, User.class);
        log.debug(">>> {}", model);
        return null;
    } catch (IOException ex) {
        // log.error("IO exception while transforming json text column in Object
        // property", ex);
        return null;
    }
}

Универсальный конвертер, usgin orm.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...