亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果返回類型為 java.sql.Timestamp,則基于接口的投影 getter 方法給出異常

如果返回類型為 java.sql.Timestamp,則基于接口的投影 getter 方法給出異常

Go
慕碼人2483693 2023-01-05 15:32:18
我正在使用帶有 Spirng JPA 的 spring boot strater 2.2.0.BUILD-SNAPSHOT。我需要將一些復雜的 SQL 與一些組一起使用我正在使用基于接口的投影的本機查詢,我能夠檢索所有字段但返回類型異常java.sql.Timestamp示例:我的實體類@Entity@Table(name = "trade")public class Trade {@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "trade_id")private long tradeId;@Column(name = "symbol")private String symbol;@Column(name = "exchange")private String exchange;@Column(name = "segment")private String segment;@Column(name = "clinet_trade_id")private long clientTradeId;@Column(name = "order_id")private long orderId;@Column(name = "price")private double price;@Column(name = "sell_type")private String tradeType;@Column(name = "quantity")private int quantity;@Column(name = "trade_date_time")private Timestamp tradeDateTime;}存儲庫接口與投影接口@Repository("TradeRepository")public interface TradeRepository extends JpaRepository<Trade, Long> {// projection//https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections//Interface-based Projections//https://www.baeldung.com/spring-data-jpa-projections@Query(value = "select symbol,date(trade_date_time) as trade_date_time , sum(quantity) as quantity , sum(quantity*price) as price  from trade where sell_type ='sell' \n" +         "and trader_date > ?1  and trader_date < ?2 and user_id= ?3 " +         "group by symbol, date(trade_date_time) " +         "order by symbol, date(trade_date_time) ", nativeQuery = true) public List<TradeView> findByNativeQuery(Timestamp fromdate, Timestamp toDate, int userId);public static interface TradeView {     public String getSymbol();     public Timestamp getTradeDateTime();     public int getQuantity();     public double getPrice();  }}在這里我得到該方法的異常getTradeDateTime()
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

只需我們使用別名來匹配您界面中的名稱。不要使用 _ 但使用 tradeDateTime:


@Query(value = "select symbol, date(trade_date_time) as tradeDateTime, sum(quantity) as quantity , sum(quantity*price) as price  from trade where sell_type ='sell' \n" + 

    "and trader_date > ?1  and trader_date < ?2 and user_id= ?3 " + 

    "group by symbol, date(trade_date_time) " + 

    "order by symbol, date(trade_date_time) ", nativeQuery = true)

原因:使用本機查詢和接口投影時,未考慮實體中的列映射。


還要確保你有正確的返回類型接口!


查看完整回答
反對 回復 2023-01-05
  • 1 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號