У меня есть две сущности User
и Candidat
, где Candidat
расширяет класс User
, следующим образом:как сохранить объект с DiscriminatorValue
пользователя объекта:
@Entity
@Table(name="users")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE_USER",discriminatorType=DiscriminatorType.STRING,length=2)
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME,include=JsonTypeInfo.As.PROPERTY,property="type")
@JsonSubTypes({
@Type(name="UC",value=Candidat.class)
})
@XmlSeeAlso({Candidat.class})
public class User implements Serializable {
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long codeUser;
//other code ...
Кандидат лицо:
@Entity
@DiscriminatorValue("UC")
@XmlType(name = "UC")
public class Candidat extends User {
private String codeMassar;
и сохранить новый кандидат Я называю этот метод репозитория:
candidatRepository.save()
от:
public interface CandidatRepository extends JpaRepository<Candidat, String> {
}
Это моя служба остальное, что вызывает метод сохранения:
@RequestMapping(value = "/candidats", method = RequestMethod.POST)
public Candidat saveCandidat(@RequestBody Candidat candidat) throws Exception {
return candidatMetier.saveCandidat(candidat);
}
Проблема это когда я хочу сохранить новый Кандидат следующим образом:
{
"username": "User",
"password": "123456",
"email": "[email protected]"
}
Я получаю сообщение об ошибке сказав:
Не удалось прочитать HTTP сообщение: org.springframework.http.converter.HttpMessageNotReadableException: Не удалось прочитать документ: Неожиданный маркер (END_OBJECT), ожидаемый FIELD_NAME: Отсутствующий недвижимость «типа», который должен содержать идентификатор типа (для класса org.capvalue.fme.domain.Candidat)
То, что я понял из него, что я должен указать тип в объекте JSON Я представляемый, но я не думаю, что это необходимо, потому что я сохраняю новый Candidat
который имеет @DiscriminatorValue("UC")
, поэтому, когда его save
в таблице User
он будет автоматически сохранен с type='UC'
.
Как я могу это решить?
Попробуйте комментировать '@ JsonTypeInfo' и' @ JsonSubTypes' .. –