У меня возникли проблемы с API с двумя отношениями.
Модель — coche
@Data
@Entity
@Table(name = "coches")
public class Coche {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String matricula;
private String modelo;
private String color;
private boolean reservado=false;
@Enumerated(EnumType.STRING)
private NivelGasolina nivelGasolina;
@OneToMany(mappedBy = "coche")
@JsonBackReference
private List bookings;
public Long getId() {
return id;
}
}
Модель – Бронирование
@Data
@Entity
@Table(name = "booking")
public class Booking {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private Integer roomNumber;
// Serializa las fechas en el formato "día/mes/año"
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
private LocalDate fechaInicio;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
private LocalDate fechaFin;
@ManyToOne
@JoinColumn(name = "coche_id" /* , nullable = false*/)
@JsonManagedReference
private Coche coche;
}
Контроллер — бронирование
@RestController
@RequestMapping("/api/booking")
@RequiredArgsConstructor
public class BookingController {
private final BookingService bookingService;
@GetMapping
public ResponseEntity obteinAllBookings() {
return ResponseEntity.ok(bookingService.obteinallBookings());
}
@PostMapping
public ResponseEntity createNewBooking(@RequestBody Booking booking) {
try {
Booking createdBooking = bookingService.newBooking(booking);
return ResponseEntity.status(HttpStatus.CREATED).body(createdBooking);
} catch (Exception e) {
System.out.println("Error al crear la reserva : ---->> " + e.getMessage()); // Imprime el mensaje de error en la consola
e.printStackTrace(); // Imprime el stack trace del error
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
Сервис – Бронирование
public class BookingService {
private final BookingRepository bookingRepository;
private final CocheRepository cocheRepository;
public List obteinallBookings() {
return bookingRepository.findAll();
}
public Booking newBooking(Booking booking) {
if (booking.getCoche() != null && booking.getCoche().getId() != null) {
Coche cocheExistente = cocheRepository.findById(booking.getCoche().getId())
.orElseThrow(() -> new RuntimeException("Coche no encontrado"));
booking.setCoche(cocheExistente);
cocheExistente.setReservado(true);
}
return bookingRepository.save(booking);
}
public Booking updateBooking(Long id, Booking booking) {
Booking existBooking = bookingRepository.findById(id)
.orElseThrow(() -> new RuntimeException("Booking no encontrado"));
existBooking.setFechaInicio(booking.getFechaInicio());
existBooking.setFechaFin(booking.getFechaFin());
return bookingRepository.save(existBooking);
}
public void deteleBooking(Long id) {
bookingRepository.deleteById(id);
}
}
Проблемы:
'coches' отлично работает с почтальоном, я могу получить/обновить/удалить, у меня были некоторые данные в данных. sql, несколько автомобилей и 1 бронирование.
Когда я пытаюсь GET при бронировании, API работает нормально, я получаю следующее;
{
"id": 1,
"roomNumber": 101,
"fechaInicio": "01-10-2023",
"fechaFin": "05-10-2023",
"coche": {
"id": 1,
"matricula": "1234ABC",
"modelo": "Toyota Corolla",
"color": "#808080",
"reservado": true,
"nivelGasolina": "LLENO"
}
}
]```
But if I try to POST on booking with this JSON;
{
"roomNumber": 182,
"fechaInicio": "2023-10-05",
"fechaFin": "2023-10 -08",
"coche": {
"id": 4
}
I get this error;
`2024-12-16T16:58:18.664Z WARN 17972 --- [LucasRent] [nio-8080-exec-3] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class com.lucas.fuel.LucasRent.model.Booking]]
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (`java.util.List`) not compatible with managed type (com.lucas.fuel.LucasRent.model.Booking)`
I dont know where is the problem, on postman I had tried to Header -> Content-type -> application/json but it dont works anyways..
I tried a lot, since types of consume json on the code...
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-for-type
Springboot — не удалось оценить десериализацию Джексона для типа ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1734369255
Anonymous
У меня возникли проблемы с API с двумя отношениями.
Модель — coche
@Data
@Entity
@Table(name = "coches")
public class Coche {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String matricula;
private String modelo;
private String color;
private boolean reservado=false;
@Enumerated(EnumType.STRING)
private NivelGasolina nivelGasolina;
@OneToMany(mappedBy = "coche")
@JsonBackReference
private List bookings;
public Long getId() {
return id;
}
}
Модель – Бронирование
@Data
@Entity
@Table(name = "booking")
public class Booking {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private Integer roomNumber;
// Serializa las fechas en el formato "día/mes/año"
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
private LocalDate fechaInicio;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
private LocalDate fechaFin;
@ManyToOne
@JoinColumn(name = "coche_id" /* , nullable = false*/)
@JsonManagedReference
private Coche coche;
}
Контроллер — бронирование
@RestController
@RequestMapping("/api/booking")
@RequiredArgsConstructor
public class BookingController {
private final BookingService bookingService;
@GetMapping
public ResponseEntity obteinAllBookings() {
return ResponseEntity.ok(bookingService.obteinallBookings());
}
@PostMapping
public ResponseEntity createNewBooking(@RequestBody Booking booking) {
try {
Booking createdBooking = bookingService.newBooking(booking);
return ResponseEntity.status(HttpStatus.CREATED).body(createdBooking);
} catch (Exception e) {
System.out.println("Error al crear la reserva : ---->> " + e.getMessage()); // Imprime el mensaje de error en la consola
e.printStackTrace(); // Imprime el stack trace del error
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
Сервис – Бронирование
public class BookingService {
private final BookingRepository bookingRepository;
private final CocheRepository cocheRepository;
public List obteinallBookings() {
return bookingRepository.findAll();
}
public Booking newBooking(Booking booking) {
if (booking.getCoche() != null && booking.getCoche().getId() != null) {
Coche cocheExistente = cocheRepository.findById(booking.getCoche().getId())
.orElseThrow(() -> new RuntimeException("Coche no encontrado"));
booking.setCoche(cocheExistente);
cocheExistente.setReservado(true);
}
return bookingRepository.save(booking);
}
public Booking updateBooking(Long id, Booking booking) {
Booking existBooking = bookingRepository.findById(id)
.orElseThrow(() -> new RuntimeException("Booking no encontrado"));
existBooking.setFechaInicio(booking.getFechaInicio());
existBooking.setFechaFin(booking.getFechaFin());
return bookingRepository.save(existBooking);
}
public void deteleBooking(Long id) {
bookingRepository.deleteById(id);
}
}
Проблемы:
'coches' отлично работает с почтальоном, я могу получить/обновить/удалить, у меня были некоторые данные в данных. sql, несколько автомобилей и 1 бронирование.
Когда я пытаюсь GET при бронировании, API работает нормально, я получаю следующее;
{
"id": 1,
"roomNumber": 101,
"fechaInicio": "01-10-2023",
"fechaFin": "05-10-2023",
"coche": {
"id": 1,
"matricula": "1234ABC",
"modelo": "Toyota Corolla",
"color": "#808080",
"reservado": true,
"nivelGasolina": "LLENO"
}
}
]```
But if I try to POST on booking with this JSON;
{
"roomNumber": 182,
"fechaInicio": "2023-10-05",
"fechaFin": "2023-10 -08",
"coche": {
"id": 4
}
I get this error;
`2024-12-16T16:58:18.664Z WARN 17972 --- [LucasRent] [nio-8080-exec-3] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class com.lucas.fuel.LucasRent.model.Booking]]
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (`java.util.List`) not compatible with managed type (com.lucas.fuel.LucasRent.model.Booking)`
I dont know where is the problem, on postman I had tried to Header -> Content-type -> application/json but it dont works anyways..
I tried a lot, since types of consume json on the code...
Подробнее здесь: [url]https://stackoverflow.com/questions/79285515/springboot-failed-to-evaluate-jackson-deserialization-for-type[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия