3
respostas

Busca por ID envolvendo chave composta

Prezados, bom dia!

Alguém por favor pode exemplificar via código o uso do findbyid do JpaRepository envolvendo chave composta? Obrigado.

3 respostas

Oi Lucas, tudo bem?

Entidade Employee.java

@Entity
@Table(name = "employees")
public class Employee implements Serializable {

    @EmbeddedId
    private EmployeeId employeeId;

Chave composta EmployeeId.java

@Embeddable
public class EmployeeId implements Serializable {

    @Column(name = "employee_id")
    private Long employeeId;

    @Column(name = "department_id")
    private Long departmentId;

Consulta por findById usando o EmployeeId:

Optional<Employee> employee = employeeRepository.findById(new EmployeeId(100L, 10L));

Boa noite. Já ajudou muito, porém fiquei com outra dúvida. Se a chave fosse composta por campos de outro tipo, como por exemplo:

@Embeddable public class EmployeeId implements Serializable {

@Column(name = "employee_id")
private Integer employeeId;

@Column(name = "department_id")
private String departmentId;

Como seria o findById? Por último, como seria a URL de consulta, ou seja, como informar a chave composta na consulta atraves do navegador ou outra ferramenta de teste como o Postman?

Oi Lucas,

Nao muda muita coisa em relacao ao que o Otavio explicou. Seria algo assim:

employeeRepository.findById(new EmployeeId(100L, "10"));

Se for uma consulta, poderia ser uma requisicao GET passando os parametros do ID na url:

/api/employee?employeeId=100&departmentId=10

Se a requisicao for do tipo POST os parametros seriam enviados no corpo da requisicao.

Bons estudos!