Тип коллекции JPA Postgres jsonb с несколькими типами не удается сохранитьJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тип коллекции JPA Postgres jsonb с несколькими типами не удается сохранить

Сообщение Anonymous »

Я буду использовать домашних животных в качестве модели данных, чтобы продемонстрировать свою проблему. В магазине домашних животных есть разные типы домашних животных.
Когда магазин создан со смешанными типами домашних животных, я получаю исключение.
[{"type":"cat","sound":"lala","color":"black"},{"type":"dog","bread":"pit","color":"brown"}]";

используется: java.lang.IllegalArgumentException: данный массив байтов
не может быть преобразован в объект Json... еще 134 Причина:
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: не удалось
разрешить идентификатор типа 'cat' как подтип
com.test.Dog: Класс
com.test.Cat не является подтипом
com.test.Dog at
[Источник:
(byte[])"
строка: 1, столбец: 119] (через цепочку ссылок:
java.util.ArrayList[1]) at
app//com.fasterxml.jackson.databind.exc.InvalidTypeIdException.from(InvalidTypeIdException.java:43)

Я понимаю, что у postgres есть проблемы с сохранением объектов разных типов. Есть ли способ решить эту проблему?
класс сущности:
@Entity
@NoArgsConstructor
@Data
@AllArgsConstructor
@TypeDef(name = "json", typeClass = JsonType.class)
@EntityListeners({
AuditingEntityListener.class
})
@Audited
public class StoreEntity implements Serializable {

@Id
private String id;

@NotNull
private String name;

@Valid
@Type(type = "json")
@Column(columnDefinition = "jsonb")
private List
list= new ArrayList();

}

объект данных
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
visible = true,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(name = "cat", value = Cat.class),
@JsonSubTypes.Type(name = "dog", value = Dog.class),
@JsonSubTypes.Type(name = "Pig", value = Pig.class)
})
abstract class Pets {

private String type;

@JsonProperty("type")
private String type;

// getters, setters, toString
}

class Cat extends Pets {
}

class Dog extends Dogs {
}

Repository
public interface StoreEntityRepository
extends CrudRepository, JpaSpecificationExecutor {
}


Подробнее здесь: https://stackoverflow.com/questions/722 ... ls-on-save
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»