SóProvas


ID
3356848
Banca
CESPE / CEBRASPE
Órgão
TJ-PA
Ano
2020
Provas
Disciplina
Programação
Assuntos

O Hibernate tem suporte para mais de um tipo de herança. Na estratégia Tabela por Classe,

Alternativas
Comentários
  • Questão bem "nojentinha", basta ver os gráficos das respostas. ;-/

    Vamos lá, peguei um exemplo do devmedia para tentar explicar o cenário.

    Na superclasse "Pessoa' tem a estratégia de geração da pk:

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    ----------------------------------------------------------------------------------------

    @Entity

    @Inheritance(strategy = InheritanceType.JOINED)

    public class Pessoa implements Serializable {

      

      @Id

      @GeneratedValue(strategy = GenerationType.IDENTITY)

      private Long idPessoa;

      private String nome;

      

      //getters and setters omitidos

    }

    ----------------------------------------------------------------------------------------

    Na subclasse "PessoaFisica" não tem a estratégia de geração da PK e sim a anotação:

    @PrimaryKeyJoinColumn, vejamos:

    ----------------------------------------------------------------------------------------

    @Entity

    @PrimaryKeyJoinColumn(name="idPessoa")

    public class PessoaFisica extends Pessoa {

      

      private String cpf;

      

      //getters and setters omitidos

    }

    ----------------------------------------------------------------------------------------

    Acredito que a banca se inspirou nesse modelo de herança para ditar a letra d) como correta:

    d) a classe deve ser escrita sem anotações IDENTITY.

    Onde a subclasse de fato não possui tal anotação.

    De qualquer forma achei a redação/comando da questão estranha(o).

    Fonte: devmedia

    go @head!!!!

  • cara.. vamos lá

    tive que reler doc pra lembrar

    4 estrategias de herança

    SINGLE TABLE (tudo numa tabela só),

    MAPPED SUPER CLASS (só existe no modelo O.O e não no relacional), 

    JOINED TABLE (as tabelas possuem somente seus atributos específicios e uma chave do pai pra fazer join)

    TABLE por classe (tabelas com todos os atributos)

    A - não entendi o que ele quis dizer. Mas talvez, no hibernate vc faz mapeamento bidirecional ou unidirecional. Exemplo: Curso possui TipoCurso.. Se curso tiver uma referencia para tipoCurso e este uma referencia para aquele, é bidirecional

    No caso de herança não tem muito sentido isso

    B - A anotação que faz geração do id é o @GenereatedValue, IDENTITY é uma estratégia de geração, que se baseia na geração de número auto incrementais (https://www.baeldung.com/hibernate-identifiers)

    C - não existe anotação auto

    E - essa com certeza errada, pois cada tabela terá suas propriedades específicas

    Tendo dito isso, eu erraria claramente a questão

    Pois fui no stackoverflow e achei: 

    Cannot use identity column key generation with <union-subclass> mapping for: org.example.ExampleClass

  • Loucura, absurdo. Nem existe essa tal anotação IDENTITY

  • questão sem noção