Questão nº 27
Questão de Tecnologia da Informação · FCC TRF4 2025 (nº 27)
Um analista cria a entidade `Processo` para um sistema de um tribunal, persistindo processos judiciais em um banco relacional, com número do processo gerado automaticamente, tipo de ação não nulo e relacionamento `N:1` com a entidade `Vara` (unidade judicial). Nesse contexto, o mapeamento correto da entidade `Processo` é `@Entity` para indicar que `Processo` é uma entidade,
- A`@Id` e `@GeneratedValue(strategy = GenerationType.SEQUENCE)` para o atributo número do processo, `@Column(nullable=true)` para tipo de ação, `@ManyToOne @JoinColumn(name = "processo_id", nullable = false)` para o atributo que representa a vara.
- B`@Column(nullable=false)` para o atributo que representa o tipo de ação, `@ManyToOne(mappedBy = "vara")` e `@JoinColumn(name = "numero", nullable = false)` para o atributo que representa a vara.
- C`@Id` e `@GeneratedValue(strategy = GenerationType.IDENTITY)` para o atributo número do processo, `@Column(nullable=false)` para o atributo que representa o tipo de ação, `@ManyToOne` e `@JoinColumn(name = "vara_id", nullable = false)` para o atributo que representa a vara. (alternativa correta)
- D`@Id` e `@GeneratedValue(type = GenerationType.IDENTITY)` para o atributo número do processo, `@Column(nullable=false)` para tipo de ação, `@OneToOne @JoinColumn(name = "vara_id", nullable = true)` para o atributo que representa a vara.
- E`@Column(nullable=false)` para tipo de ação, `@ManyToOne` e `@JoinColumn(id = "vara_id", nullable = false)` para o atributo que representa a vara.
Resposta comentada
Gabarito Alternativa C
Para mapear objetos Java para tabelas de banco de dados com JPA/Hibernate, usamos anotações que indicam como cada parte da classe (como campos e relacionamentos) corresponde a elementos do banco de dados (como colunas e chaves estrangeiras).
- (A) Incorreta: O tipo de ação é definido como
nullable=true, mas o contexto pede "não nulo". OnamedaJoinColumn(processo_id) também está incorreto, pois deveria referenciar aVara. - (B) Incorreta: O atributo
mappedByé usado apenas no lado inverso de um relacionamento bidirecional (o lado que não possui a chave estrangeira), e não no@ManyToOneque é o lado proprietário da chave estrangeira. - (C) Correta: O
@Ide@GeneratedValue(strategy = GenerationType.IDENTITY)estão corretos para um ID gerado automaticamente. O@Column(nullable=false)atende ao requisito de tipo de ação não nulo. O@ManyToOnee@JoinColumn(name = "vara_id", nullable = false)mapeiam corretamente o relacionamentoN:1comVara, indicando que a colunavara_idserá a chave estrangeira e não pode ser nula, o que é comum para um relacionamento mandatório. - (D) Incorreta: O
typeem@GeneratedValuedeveria serstrategy. Além disso, o relacionamento éN:1(ManyToOne), nãoOneToOne. Onullable=truepara aVaratambém contradiz a natureza de um relacionamentoN:1mandatório. - (E) Incorreta: O atributo para nomear a coluna em
@JoinColumnéname, nãoid.
Fonte: FCC TRF4 2025 Técnico Judiciário - Área Apoio Especializado - Especialidade Desenvolvimento de Sistema da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.