Andrés Estrella
Andrés Estrella

Reputation: 93

JPA find by foreign key

I have the following class:

@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "Municipios")
public class Municipio {
    @Id
    private String nombreMunicipio;

    @ManyToOne
    @JoinColumn(name = "nombreProvincia", nullable = false)
    private Provincia nombreProvincia;        
}

how would I go about getting all the Municipios given the string ID of the province? what would the controller and repository look like? I've been trying for hours and can't find the answer

Edit: decided to post my repository and controller

public interface MunicipioRepo extends JpaRepository<Municipio, Integer> {
    
    boolean existsByNombreMunicipio(String nombreMunicipio);
    Municipio findByNombreMunicipio(String nombreMunicipio);
    List<Municipio> findAllByNombreProvincia(final Provincia provincia);
}



@GetMapping("/municipiosenprovincia")
    public List<Municipio> getMunicipiosEnProvincia(@RequestParam String nombreProvincia){
        System.out.printf(nombreProvincia);
        Optional<Provincia> miProv = provinciaRepo.findById(nombreProvincia);
        return municipioRepo.findAllByNombreProvincia(miProv.get());
    }

Upvotes: 2

Views: 4475

Answers (1)

Jignesh M. Khatri
Jignesh M. Khatri

Reputation: 1596

Assuming that primary key of Provincia is id:

public interface MunicipioRepo extends JpaRepository<Municipio, Integer> {
    ...
    List<Municipio> findAllByNombreProvinciaId(final String provinciaId);
}

And just pass provinciaId to this method:

// getMunicipiosEnProvincia method in controller
...
return municipioRepo.findAllByNombreProvinciaId(nombreProvincia); // here nombreProvincia is the id of Provincia

Upvotes: 2

Related Questions