Проблема с двунаправленным созданием / обновлением API Spring-boot - PullRequest
0 голосов
/ 05 июля 2019

Итак, я построил API с загрузкой crud при весенней загрузке, проблема возникает из-за двунаправленной природы сущностей.

Я могу создать его вручную через приложение (non-api), и оно появляетсяс детьми и всем.

Однако, как только API работает, я пытаюсь опубликовать (создать) JSON, например:

{
    "idReserva": 1,
    "comentarios": "",
    "fechaIngreso": "0019-07-15",
    "fechaSalida": "0019-10-30",
    "cantidadDePersonas": 3,
    "usuario": {
        "idUsuario": 1,
        "nombres": "test",
        "apellidos": "test",
        "contrasena": "1234",
        "codUsuario": "USU01",
        "email": "test@gmail.com",
        "foto": ""
    },
    "pagos": [
        {
            "idPago": 1,
            "tipo": "Efectivo",
            "total": 1500
        }
    ],
    "habitaciones": [
        {
            "idHabitacion": 1,
            "descripcion": "Habitación Ejecutiva",
            "tipo": 3,
            "numero": "5",
            "codHabitacion": "HAB01",
            "precio": "1500 dolares"
        }
    ]
}

Проблема возникает в моем "создать "метод внутри хранилища, я не могу получить вложенные объекты, он создает" резервную "запись в базе данных, но не дает ей своих детей

    List<Pago> listPagos = new ArrayList<>();
    for (Pago pago : reserva.getPagos()){
        log.info(pago.getIdPago()+"");
        pagoService.create(pago);
        listPagos.add(pago);
    }
    reserva.setPagos(listPagos);

Я пробовал что-то подобноекак и выше, чтобы получить каждую сущность «pago» (оплата) из json, а затем создать ее / добавить в резерв, так как мне нужно, чтобы поля ее дочерних платежей были в базе данных, но когда я регистрирую сущности, я получаю"null", как будто он ничего не получает, есть ли какой-то особый способ получения вложенных объектов?

1 Ответ

0 голосов
/ 05 июля 2019

Хорошо, так что после нескольких часов работы я нашел проблему.В самом API не было чего-то важного: когда вы хотите сохранить внутри уровня ресурсов (api), перед тем, как вы на самом деле .save () используете уровень службы, вы хотите создать экземпляр дочерней сущности, используя цикл For:каждая сущность внутри Json для экземпляра этого потомка, и JPA автоматически создаст их и добавит к родительской сущности.

Пример:

for (Habitacion habitacion : reserva.getHabitaciones()){
            habitacion.setReserva(reserva);
        }
        for (Pago pago : reserva.getPagos()){
            pago.setReserva(reserva);
        }
        Usuario usuario = reserva.getUsuario();
        usuario.setReserva(reserva);

(это внутриметод createReserva из уровня ресурсов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...