2017-02-20 18 views
0

MyController.javaКак вызвать хранимые процедуры в спящем режиме с параметрами даты?

@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. Я хочу вернуть эти 4 данных в json-форме, привязывая их к классу 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 Status 500 - обработка запроса не удалась; Вложенное исключение - org.hibernate.MappingException: Неизвестная сущность: com.infodev.models.OhlcResponse – sagar

+0

Ну, вы должны аннотировать класс 'OhlcResponse' с' @ Entity' или перечислить его в вашем XML-сопоставлении (в зависимости от того, какой метод вы используете с помощью). – coladict

 Смежные вопросы

  • Нет связанных вопросов^_^