【问题标题】:JPA Query mappingJPA 查询映射
【发布时间】:2021-06-04 00:53:38
【问题描述】:

我想在 ProductRepository 中使用 orderNumber,但我不断收到 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);

【问题讨论】:

  • 您遇到了什么错误?你也可以添加你的错误吗?
  • 出现查询错误。 @Query(value = "SELECT * FROM OrderItem a, Product b WHERE a.orderItem_id = b.orderItem_id", nativeQuery = true)

标签: sql spring-boot jpa


【解决方案1】:

或者,您可以尝试通过如下方法查询,这种情况下不需要使用@Query

ProductRepository

 Product findByOrderItemOrderNumber(String orderNumber);

您可以找到更多详细信息here

【讨论】:

  • 产品没有订单号 :(
  • 它会从OrderItem获取orderNumber
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 2015-06-08
  • 2014-06-25
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多