Как отобразить записи из таблицы с отображением отношений в Spring boot, CrudRepository и Thymeleaf - PullRequest
0 голосов
/ 01 апреля 2020

Я разрабатываю простой проект CRUD с Spring Boot. Я успешно завершил соединение с базой данных и отображение записей из одной таблицы. Теперь я хочу показать «Телефоны», принадлежащие «Клиенту», но когда я нажимаю «VerDetalle» (http://localhost: 8080 / listar ), он показывает таблицу без какой-либо записи (очевидно, что таблица имеет данные)

Я думаю, что проблема заключается в методе telefonosById (nro_cliente) TelefonoService и verDetalle (@PathVariable Integer nro_cliente, модель) контроллера.

"E01_cliente" и "E01_tef" являются субъектами.

@Entity
public class E01_telefono {

    private Integer codigo_area;
    @Id
    private Integer nro_telefono;
    private char tipo;
    private Integer nro_cliente;

    @ManyToOne
    private E01_cliente cliente;

    //**Constructor and Getters and Setters**//

Объект E01_cliente:

@Entity
public class E01_cliente {

    @Id
    private Integer nro_cliente;
    private String nombre;
    private String apellido;
    private String direccion;
    private boolean activo;

    @OneToMany(mappedBy = "cliente")
    private Set<E01_telefono> telefonos;

}

Сервисный телефон:

@Service
public class TelefonoService implements IServiceTelefono {

    @Autowired
    private ITelefono telData;


    @Override
    public List<E01_telefono> AllPhones() {
        return (List<E01_telefono>) telData.findAll();
    }

    @Override
    public Optional<E01_telefono> telefonosById(Integer nro_cliente) {
        return telData.findById(nro_cliente);


    }

Контроллер:

@Controller
public class Controlador {

    @Autowired
    private IServiceCliente serviceCliente;

    @Autowired
    private IServiceTelefono serviceTelefono;


    @GetMapping("/listar")
    public String listarClientes(Model model){
        List<E01_cliente> clientes = serviceCliente.listarClientes();
        model.addAttribute("clientes", clientes);
        return "index";
    }

    @GetMapping("/agregarCliente")
    public String agregarCliente(Model model){

        model.addAttribute("cliente", new E01_cliente());
        //Cuando el usuario presione se mostrara el formulario correspondiente al Cliente
        return "formulario";
    }

    @PostMapping("/guardarCliente")
    public String guardarCliente(Model model, @Valid E01_cliente cliente){
        serviceCliente.guardarCliente(cliente);
        return "redirect:/listar";
    }

    @GetMapping("/editarCliente/{nro_cliente}")
    public String editarCliente(@PathVariable Integer nro_cliente, Model model ){
        Optional<E01_cliente> clientEdit = serviceCliente.listarId(nro_cliente);
        model.addAttribute("cliente", clientEdit);
        return "formulario";
    }

    @GetMapping("/eliminarCliente/{nro_cliente}")
    public String borrarCliente(Model model, @PathVariable Integer nro_cliente){
        serviceCliente.eliminarCliente(nro_cliente);
        return "redirect:/listar";
    }

    @GetMapping("/verDetalle/{nro_cliente}")
    public String verDetalle(@PathVariable Integer nro_cliente, Model model){

        Optional<E01_telefono> telefonosCliente = serviceTelefono.telefonosById(nro_cliente);

        if(telefonosCliente.isPresent()) {
            model.addAttribute("telefonos", telefonosCliente);
        }
        return "detalleCliente";
    }
}

HTML Листья тимьяна "detalleCliente. html":

<body>
<div class="container mt-4">

    <table class="table">
        <thead>
        <tr>
            <th>Código Área</th>
            <th>Teléfono</th>
            <th>Tipo</th>
            <th>Número Cliente</th>
        </tr>
        </thead>
        <tbody>
            <tr th:each="telefono:${telefonos}">
                <td th:text="${telefono.codigo_area}"></td>
                <td th:text="${telefono.nro_telefono}"></td>
                <td th:text="${telefono.tipo}"></td>
                <td th:text="${telefono.nro_cliente}"></td>
            </tr>
        </tbody>
    </table>
</div>
</body>

1 Ответ

0 голосов
/ 02 апреля 2020

Если вы хотите поставить E01_cliente cliente с telefonosCliente на $ {telefonos} попробуйте изменить

model.addAttribute("telefonos", telefonosCliente);

На

model.addAttribute("telefonos", telefonosCliente.get().getClientes());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...