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