Questão nº 24

Questão de Tecnologia da Informação · FCC TRE-PR 2017 (nº 24)

FCC2017Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de SistemasTecnologia da Informação
Gabarito: Aver comentário ↓

Em uma relação Many-to-Many bidirecional entre as entidades Produto e Cliente, deseja-se possibilitar a consulta de quais produtos um determinado cliente adquiriu e quais clientes possuem determinado produto.

Na classe dominante Cliente, em Java, foi utilizada a seguinte notação:

```
@ManyToMany
@JoinTable(name="cliente_has_produto", joinColumns=
{@JoinColumn(name="cliente_id")}, inverseJoinColumns=
{@JoinColumn(name="produto_id")})
private List produtos;
```

A notação equivalente, na classe Produto, deve ser:

Resposta comentada

Gabarito Alternativa A

Em uma relação Many-to-Many bidirecional com JPA, uma das entidades (o lado "dono") define a tabela de junção, enquanto a outra (o lado "inverso") usa o atributo mappedBy para indicar qual campo na entidade dona gerencia essa relação, evitando duplicação.

  • (A) Correta: O atributo mappedBy="produtos" indica corretamente que a relação é gerenciada pelo campo produtos na classe Cliente, que é o lado dono e onde a tabela de junção cliente_has_produto foi definida.
  • (B) Incorreta: Embora @ManyToMany esteja correto, a ausência de mappedBy faria com que o Hibernate tentasse criar uma segunda tabela de junção para a mesma relação, gerando erro ou comportamento inesperado. cascade define o comportamento em cascata, não a inversão da relação.
  • (C) Incorreta: A anotação @OneToMany está errada, pois a relação é Many-to-Many. Além disso, mappedBy não é usado dessa forma em @OneToMany quando a relação é bidirecional de um para muitos.
  • (D) Incorreta: O atributo referredBy não existe nas especificações JPA para mapeamento de relações. A palavra-chave correta para o lado inverso de uma relação bidirecional é mappedBy. Essa é a armadilha da banca, usando um termo que soa similar, mas é inválido.
  • (E) Incorreta: A anotação @ManyToOne está errada, pois a relação é Many-to-Many. O atributo mappedBy também não é utilizado com @ManyToOne, que é sempre o lado dono da relação.

Fonte: FCC TRE-PR 2017 Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho