Сопоставление запросов JPA

#sql #spring-boot #jpa

Вопрос:

Я хочу использовать порядковый номер в ProductRepository, но я продолжаю получать ошибку SQL. Я нанес на карту обе стороны.

это сущность продукта.

 @Entity
public class Product extends BaseEntity {
    @Id
    @GeneratedValue
    @Column(name = "product_id")
    private Long id;
    @ManyToOne
    @JoinColumn(name = "orderItem_id")
    private OrderItem orderItem;
this is orderItem entity.
 
 @Entity
public class OrderItem extends BaseEntity {
    @Id
    @GeneratedValue
    @Column(name = "orderItem_id")
    private Long id;
    private String orderNumber
    
    @OneToMany(mappedBy = "orderItem", cascade = CascadeType.ALL, orphanRemoval = true)
    @Builder.Default
    private List<Product> products = new ArrayList<Product>();
 

это запрос в ProductRepository.

 @Query(value = "SELECT * FROM OrderItem a, Product b WHERE a.orderItem_id = b.orderItem_id", nativeQuery = true)
    Product findByOrderNumber(String orderNumber);
 

Комментарии:

1. Какую ошибку вы получаете? Не могли бы вы также добавить свою ошибку?

2. Возникает ошибка запроса. @Запрос(значение = «ВЫБЕРИТЕ * ИЗ заказа a, продукта b, ГДЕ a.orderItem_id = b.orderItem_id», NativeQuery = true)

Ответ №1:

В качестве альтернативы вы можете попробовать выполнить запрос методом, как показано ниже, @Query в этом случае вам не нужно использовать.

Характеристика продукта

  Product findByOrderItemOrderNumber(String orderNumber);
 

более подробную информацию вы можете найти здесь

Комментарии:

1. У продукта нет порядкового номера, т. е. 🙁

2. Он заберет orderNumber у OrderItem