【问题标题】:Hibernate @Query not producing the required OutputHibernate @Query 没有产生所需的输出
【发布时间】:2021-02-21 18:05:48
【问题描述】:

我正在编写一个查询以返回所有状态为 False 并按其订单日期排序的订单。 这里基于日期的排序工作正常,但 orderStatus.cancelled=false 不起作用。无论是否取消,我都会收到所有订单。

存储库

public interface OrdersRepository extends JpaRepository<Orders,Integer> {

    @Query("select o from Orders o where o.orderStatus.cancelled=false order by o.orderDate")
    List<Orders> getAllOrders();
}

订单

@Entity
public class Orders {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private int id;

    @OneToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinColumn(name = "order_id")
    @MapsId
    private OrderStatus orderStatus;
}

订单状态

@Entity
public class OrderStatus {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private int id;
    .....
    .....
    private boolean cancelled;
}

【问题讨论】:

  • 尝试 0 而不是 false
  • 还要检查查询类导入
  • 请分享生成的 SQL 查询,如日志输出所示。

标签: java mysql spring-boot hibernate


【解决方案1】:

改变

o.orderStatus.cancelled=false 

o.orderStatus.cancelled='false'o.orderStatus.cancelled is false

【讨论】:

    【解决方案2】:

    更改方法的名称,例如:

    public interface OrdersRepository extends JpaRepository<Orders,Integer> {
    
        @Query("select o from Orders o where o.orderStatus.cancelled=false order by o.orderDate")
        List<Orders> getAllNonCancelledOrders();
    }
    

    getAllOrders()JpaRepository 也使用的关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多