1
resposta

Inheritance

Boa tarde, estou criando uma API e estou com problemas na hora de realizar a persistência no banco(MariaDB), segue o erro:

com.system.api.model.Pessoa` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information

Segue a estrutura:

PROCESSO

@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Entity
public class Processo {
    @EqualsAndHashCode.Include
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Integer numero;

    @ManyToOne
    @JoinColumn(name = "autor_id")
    private Autor autor;

    private BigDecimal vlrCausa;

}

PESSOA

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipo_pessoa")
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public abstract class Pessoa{
    @EqualsAndHashCode.Include
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nome;

    private String cpfCnpj;

    @Column(name = "tipo_pessoa", insertable = false, updatable = false)
    private String tipoPessoa;

AUTOR

@DiscriminatorValue("AUTOR")
@Entity
@Table(name = "Pessoa")
public class Autor extends Pessoa{

}
1 resposta

Olá Andrew, tudo certo?

O erro que você está enfrentando indica que a classe abstrata Pessoa precisa ser mapeada para um tipo concreto. Isso ocorre porque você está usando herança com uma estratégia de tabela única (SINGLE_TABLE) e é necessário ter uma implementação concreta da classe abstrata para persistir os dados.

Para corrigir o erro, você precisa criar uma classe concreta que estenda a classe abstrata Pessoa e fazer o mapeamento dessa classe no banco de dados.

Após realizar essas verificações e ajustes, tente persistir novamente os dados no banco de dados e verifique se o erro persiste.

Espero que isso ajude a solucionar o problema. Se você ainda tiver dificuldades, por favor, forneça mais informações sobre o contexto e o erro específico que está enfrentando, para que eu possa ajudar de forma mais precisa.

Bons estudos