2017-02-20 4 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

近くに不正な構文で、リクエストとレスポンスはOK、

クエリのクエリ= session.createSQLQuery( 「CALL uspGetOhlcData(と思われます:fromDate、:toDate) ")

このクエリを使用していて、Symbol StockSymbolと同じストアドプロシージャでこれを参照しています。ストアドプロシージャで、ここで自社コードを使用してみてください :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

'OhlcResponse'クラスに' @ Entity'を注釈付けするか、またはXMLマッピングでそれをリストする必要がありますを使用して)。 – coladict

関連する問題