У меня следующий класс:

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

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

Как мне получить все муниципалитеты с учетом строкового идентификатора провинции? как будут выглядеть контроллер и репозиторий? Я пытаюсь часами и не могу найти ответ

Изменить: решил опубликовать свой репозиторий и контроллер

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());
    }
0
Andrès Estrella 9 Апр 2021 в 06:51

1 ответ

Лучший ответ

Предполагая, что первичный ключ Provincia равен id:

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

И просто передайте provinciaId этому методу:

// getMunicipiosEnProvincia method in controller
...
return municipioRepo.findAllByNombreProvinciaId(nombreProvincia); // here nombreProvincia is the id of Provincia
0
Jignesh M. Khatri 9 Апр 2021 в 04:00