簡體   English   中英

JPA @Query 給出 NonUniqueResultException

[英]JPA @Query gives NonUniqueResultException

我有這樣的實體

@Builder
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Table(name = "fulfillment_purchase_orders")
public class FulfillmentPurchaseOrder extends Audit implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column
    private Integer id;

    @Column(name = "purchase_order_id")
    private Integer purchaseOrderId;

    @Column(name = "version")
    private Integer version;

但我想從版本中獲取最新數據。 我嘗試使用此代碼:

@Query("select f from FulfillmentPurchaseOrder f where f.purchaseOrderId =?1 order by f.version desc")
    Optional<FulfillmentPurchaseOrder> findByPurchaseOrderId(Integer purchaseOrderId);

但我有這樣的錯誤

query did not return a unique result: 2; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 2",

我的問題是如何查詢僅按版本獲取最新使用訂單?

使用子查詢,如:

@Query("select * from FulfillmentPurchaseOrder f where f.purchaseOrderId = (SELECT max(fp.purchaseOrderId) FROM FulfillmentPurchaseOrder fp)")
    Optional<FulfillmentPurchaseOrder> findByPurchaseOrderId(Integer purchaseOrderId);

您的查詢返回的結果不止一個。 嘗試使查詢成為本機並在末尾添加LIMIT 1 ,如下所示:

@Query(nativeQuery = true, value = "select f from FulfillmentPurchaseOrder f where f.purchaseOrderId =?1 order by f.version desc LIMIT 1")
    Optional<FulfillmentPurchaseOrder> findByPurchaseOrderId(Integer purchaseOrderId);

LIMIT 1表示返回匹配的第一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM