2017-02-20 117 views
0

MyController.java如何用日期參數在hibernate中調用存儲過程?

@RequestMapping(value = "/ohlc",method = RequestMethod.POST) 
public @ResponseBody List<OhlcResponse> getOhlc(@RequestBody OhlcRequest ohlcRequest) { 

    List<OhlcResponse> ohlc = ohlcService.getOhlc(ohlcRequest); 
    return ohlc; 
} 

OhlcDaoImpl.java

 Query query = session.createSQLQuery(
      "CALL uspGetOhlcData(:stockCode,:fromDate,:toDate)") 
      .addEntity(OhlcResponse.class) 
      .setParameter("stockCode", ohlcRequest.getStockSymbol()) 
      .setParameter("fromDate",ohlcRequest.getFromDate()) 
      .setParameter("toDate", ohlcRequest.getToDate()); 


     List<OhlcResponse> list = query.list(); 

     return list; 
} 

OhlcResponse.java

public class OhlcResponse { 

private int Id; 

private BigDecimal MaxPrice; 
private BigDecimal MinPrice; 
private BigDecimal PreviousClosingPrice; 
private BigDecimal ClosingPrice; 

public BigDecimal getMaxPrice() { 
    return MaxPrice; 
} 

public void setMaxPrice(BigDecimal maxPrice) { 
    MaxPrice = maxPrice; 
} 

public BigDecimal getMinPrice() { 
    return MinPrice; 
} 

public void setMinPrice(BigDecimal minPrice) { 
    MinPrice = minPrice; 
} 

public BigDecimal getPreviousClosingPrice() { 
    return PreviousClosingPrice; 
} 

public void setPreviousClosingPrice(BigDecimal previousClosingPrice) { 
    PreviousClosingPrice = previousClosingPrice; 
} 

public BigDecimal getClosingPrice() { 
    return ClosingPrice; 
} 

public void setClosingPrice(BigDecimal closingPrice) { 
    ClosingPrice = closingPrice; 
} 

存儲過程:uspGetOhlcData

CREATE PROCEDURE uspGetOhlcData 
@StockSymbol varchar(50), 
@fromDate date, 
@toDate date 
AS 
BEGIN 

SELECT spd.ClosingPrice, spd.PreviousClosingPrice, spd.MinPrice, spd.MaxPrice 
FROM StockPriceDetl spd 
inner join Stock stk on stk.Id = spd.StockId 
inner join StockPriceMast spm on spm.Id = spd.MastId 
WHERE stk.StockSymbol= @StockSymbol AND spm.TranDate Between @fromDate and  @toDate 
END 
GO 

,你可以看到我的存儲過程返回maxprice,minprice,previousClosingPrice和ClosingPrice。我想以json形式返回這4個數據,將它們綁定到ohlcResponse類中。

目前我得到的錯誤是@PO

回答

0

附近的語法不正確的語法錯誤,你的請求和響應似乎確定,

查詢查詢=執行Session.createSQLQuery( 「CALL uspGetOhlcData(:stockCode, :fromDate,:toDate)「)

您正在使用此查詢,並將其與Symbol StockSymbol在存儲過程中的引用相同。 嘗試使用存儲過程中的stockCode:uspGetOhlcData

CREATE PROCEDURE uspGetOhlcData 
@stockCode varchar(50), 
@fromDate date, 
@toDate date 
AS 
BEGIN 

SELECT spd.ClosingPrice, spd.PreviousClosingPrice, spd.MinPrice, spd.MaxPrice 
FROM StockPriceDetl spd 
inner join Stock stk on stk.Id = spd.StockId 
inner join StockPriceMast spm on spm.Id = spd.MastId 
WHERE stk.StockSymbol= @stockCode AND spm.TranDate Between @fromDate and  @toDate 
END 
GO 
+0

感謝您的快速響應。現在它說 HTTP狀態500 - 請求處理失敗;嵌套的異常是org.hibernate.MappingException:未知的實體:com.infodev.models.OhlcResponse – sagar

+0

那麼你必須使用'@ Entity'註釋'OhlcResponse'類或者將它列在你的xml映射中(取決於你使用哪種方法使用)。 – coladict

相關問題