"(?:\\"|.)*?"
Чередование \"
и .
проходит через экранированные кавычки, в то время как ленивый квантификатор *?
гарантирует, что вы не проходите мимо конца строки с кавычками. Работает с классами .NET Framework RE
Ну, это похоже на бесконечную рекурсию. A Person
имеют много Cars
. Car
имеют один владелец, который является Person
.
Просто предложение:
Когда вы возвращаете свою сущность, Spring ожидает наличия Person
(владельца) внутри вашей структуры Car
JSON и списка Car
внутри вашего Person
. Это может быть проблемой, если вы хотите получить данные, поскольку она создаст бесконечную рекурсию. Вам нужно добавить тип fetch для LAZY
, чтобы предотвратить эту рекурсию.
@OneToMany(mappedBy="owner", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
Теперь, для вашего вопроса, как я уже сказал, ваш Car
должен иметь Person
], но в вашем запросе вы не укажете Person
(владелец), поэтому Spring не знает, кто является владельцем. Это основная проблема.
Я предлагаю вам обновить их отдельно:
@PutMapping("/people/{id}")
public ResponseEntity <?>handleUpdate(@PathVariable("id") Long personId, @RequestBody Person person) {
Optional <Person> personOptional = personRepository.findById(personId);
if (personOptional.isPresent()) {
Person owner = personOptional.get();
for (Car car: person.getCars()) {
car.setOwner(owner);
}
carRepository.saveAll(person.getCars());
person.setCars(null);
person.setId(personId);
personRepository.save(person);
}
return...;
}
В этом примере я обновляю их отдельно, но одним методом. Конечно, вам нужно будет автоувеличивать как PersonRepository
, так и CarRepository
UPDATE:
. Если вы не обходитесь каким-то образом, вам нужно будет запросить JSON структура выглядит следующим образом:
{
"id": 1,
"name": "Joe",
"cars": [
{
"car_id": 1,
"color": "red",
"owner" :
{
"id": "1"
}
},
{
"car_id": 2,
"color": "blue",
"owner" :
{
"id": "1"
}
}
]
}
Person
, поэтому, когда Spring десериализует ваш JSON для объекта, владелецCar
-null
, потому что в вашей структуре JSONCar
нет"owner" : "...."
. В любом случае, надеюсь, что это решает вашу проблему – Matheus Cirillo 13 July 2018 в 18:44Car
отправляется какnull
. Я обновил свой ответ с помощью наблюдения – Matheus Cirillo 13 July 2018 в 18:56