У меня есть объект заказа, который имеет много объектов обзора. В Order есть много сущностей OrderItem, которые также имеют много сущностей Review. Таким образом, Пользователь может вводить обзоры для конкретного Заказа в качестве общего отзыва или конкретного Заказа в качестве обзора товара.
Теперь я хочу перечислить заказы с доступными отзывами и заказ без отзывов. Для этого я должен проверить заказ || OrderItem имеет отзывы в таблице отзывов одновременно. Я думаю, что запрос количества с предложением Join должен быть выполнен. Пожалуйста, решите эту проблему.
OrderDO.java
@Table(name = "ORDER")
public class OrderDO implements Serializable{
@Column(name = "ORDER_NUMBER", nullable = false)
private String orderNumber;
@OneToMany(cascade = CascadeType.ALL, mappedBy="order")
private Set<ReviewDO> reviews = new HashSet<>();
}
OrderItemDO.java
@Table(name = "ORDER_ITEM")
public class OrderItemDO implements Serializable{
@Column(name = "PRODUCT_NAME",nullable = false)
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy="item")
private Set<ReviewDO> reviews = new HashSet<>();
}
ReviewDO.java
@Table(name = "REVIEW")
public class ReviewDO implements Serializable {
@Column(name = "RATING")
private double rating;
@Column(name = "REVIEW_TEXT")
private String reviewText;
@ManyToOne()
@JoinColumn(name = "ITEM_ID", referencedColumnName="ID")
private OrderItemDO item;
@ManyToOne()
@JoinColumn(name = "ORDER_ID", referencedColumnName="ID")
private OrderDO order;
}
OrderRepository.java
@Repository
public interface OrderRepository extends CrudRepository<OrderDO, Long>{
@Query("select order from OrderDO order where order.orderNumber = ?1")
public Optional<OrderDO> findByOrderNumber(String orderNumber);
}