我有這樣的物體
@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",
我的問題是如何查詢僅按版本獲取最新使用順序?
uj5u.com熱心網友回復:
使用子查詢,如:
@Query("select * from FulfillmentPurchaseOrder f where f.purchaseOrderId = (SELECT max(fp.purchaseOrderId) FROM FulfillmentPurchaseOrder fp)")
Optional<FulfillmentPurchaseOrder> findByPurchaseOrderId(Integer purchaseOrderId);
uj5u.com熱心網友回復:
您的查詢回傳的結果不止一個。嘗試使查詢原生并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 表示回傳匹配的第一行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372680.html
