Questão FC373629
Atenção: O Modelo Entidade-Relacionamento abaixo deve ser utilizado para responder a questão. Em uma aplicação que utiliza JPA e Hibernate, em condições ideais, a codificação corre
Plataforma Java EE
FCC · 2022
Atenção: O Modelo Entidade-Relacionamento abaixo deve ser utilizado para responder a questão.

Em uma aplicação que utiliza JPA e Hibernate, em condições ideais, a codificação correta do trecho que define o atributo da classe Login.java, que é chave primária na tabela Login do Modelo Entidade-Relacionamento é
- @Pk
@NotNull(false)
@ColumnName("emailFuncionario") private String emailFuncionario;
- @Id
@Basic(optional = true)
@JoinColumn(field = "emailFuncionario") private String emailFuncionario;
- @PrimaryKey
@Basic(required = true)
@Field(name = "emailFuncionario") private String emailFuncionario;
- @Pk
@Basic(required = true)
@Column(name = "emailFuncionario") private String emailFuncionario;
- @Id
@Basic(optional = false)
@Column(name = "emailFuncionario") private String emailFuncionario;
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
Na alternativa correta, a combinação de anotações mapeia corretamente o atributo que representa a chave primária na entidade JPA.
@Id indica ao provedor JPA/Hibernate que o atributo é a identidade da entidade — ou seja, a chave primária.
@Basic(optional = false) declara que o valor não pode ser opcional em tempo de persistência (atributo obrigatório do ponto de vista da entidade).
@Column(name = "emailFuncionario") faz o mapeamento explícito entre o nome do atributo Java e a coluna do banco de dados, garantindo que o JPA leia/grave na coluna correta.
Colocar essas anotações sobre o campo (acesso por campo) é coerente com o padrão de mapeamento; o tipo String representa corretamente um email. Para garantir restrição no nível do banco, pode-se também usar nullable=false em @Column, se desejado.
Conteúdo do catálogo FC Concursos · Atualizado em