При использовании аннотации @convert jpa для преобразования типа Postgres json в объект в Java возникает странная проблема.Я написал ниже в своем классе сущностей.
@Entity
@Table(name = "orders")
public class OrderEntity implements Serializable {
@Column(name = "address")
@Convert(converter = AddressConverter.class)
private Address address;
}
AddressConverter.java:
@Converter(autoApply = false)
public class AddressConverter implements AttributeConverter<Address, String> {
private final static ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convertToDatabaseColumn(Address attribute) {
try {
List<Address> add = new ArrayList<>();
add.add(attribute);
return objectMapper.writeValueAsString(add);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
@Override
public Address convertToEntityAttribute(String dbData) {
try {
if (dbData != null) {
if (dbData.startsWith("{")) {
return objectMapper.readValue(dbData, Address.class);
} else {
List<Address> items = objectMapper.readValue(dbData, new TypeReference<List<Address>>() {
});
if (items != null && items.size() > 0)
return items.get(0);
}
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Я получаю правильный результат при извлечении записей из Postgres в ордерентность.Теперь в конце моего метода я выполняю запрос на обновление другой таблицы, чтобы изменить ее значение, но в то же время моя таблица заказов также обновляется.В запросе я вижу все запросы на обновление, выполняемые в это время.
Однако я не написал ничего, чтобы обновить свою таблицу заказов.
Когда я комментирую свой запрос на обновление другой таблицы, эта сущность заказа времени также не обновляется.Даже если я удаляю аннотацию @convert, обновление также не выполняется.
Как предотвратить этот запрос на обновление, который автоматически выполняется для всех извлеченных записей, когда я обновляю что-то в другой таблице?