Я хочу найти хорошую структуру базы данных для хранения отзывов о проекте совместного использования автомобилей: я хочу, чтобы у меня была только таблица отзывов с идентификатором, description, Review_id, Reviewer_name. Итак, как пользователь, я хочу просмотреть автомобиль или другого пользователя. (пользователь - машина -> один ко многим). Пользователь - обзор -> один ко многим (у пользователя может быть один или несколько обзоров от других пользователей) Автомобиль - обзор -> один ко многим (у автомобиля может быть один или несколько отзывов от пользователей). Таким образом, в таблице отзывов, отзывы_ может быть как автомобиль и идентификатор пользователя.
Класс пользователя:
---
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "reviewed_id")
private List<Review> reviews;
---
Класс автомобиля:
---
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "reviewed_id")
private List<Review> reviews;
---
Класс обзора:
---
@Column(name = "reviewed_id")
private UUID reviewedId;
---
Отзыв контроллер:
---
@PostMapping("/{reviewdId}")
@ResponseStatus(HttpStatus.CREATED)
public void addReviewTo(@PathVariable UUID reviewdId, @Valid @RequestBody AddReviewDto addReviewDto,
@RequestParam UUID reviewerUserId) {
reviewService.addReviewToUser(reviewdId, addReviewDto, reviewerUserId);
}
---
Служба просмотра:
---
public void addReviewTo(UUID reviewedId, AddReviewDto addReviewDto, UUID reviewerUserId) {
User reviewer = userRepository.findById(reviewerUserId).orElseThrow(IllegalArgumentException::new);
Review review = ReviewDtoConverter.toReview(addReviewDto, reviewer.getFirstName());
review.setReviewedId(reviewedId);
reviewRepository.save(review);
}
---