![](/img/trans.png)
[英]Spring - Parameter value did not match expected type [java.lang.Long]
[英]Parameter value [20.0] did not match expected type [java.lang.Long]
這是我的Java應用程序中的一個函數:
public List<History> test(Double amount) {
String q = "SELECT h FROM History h WHERE (h.amount/POW(10,h.amountPrecision)) = :amount";
Query query = em.createQuery(q);
query.setParameter("amount", amount);
return query.getResultList();
}
例如,在我的數據庫中,我的amount = 2000
, amount = 2000
amountPrecision = 2
。 由於我可以在查詢中進行十進制運算,因此我的參數為Double
並在應用程序中輸入20.00。
Parameter value [20.0] did not match expected type [java.lang.Long]
在我的數據對象中, amount
為Long
而amountPrecision
為Integer
。 任何想法 ? 謝謝 ;)
您的方法中test(Double amount)的數量為Double,但是在WHERE子句中左側為long數據類型,右側也必須為long。
可能是您必須將方法測試簽名更改為:
public List<History> test(Long amount)
嘗試將查詢更改為:
SELECT h FROM History h WHERE (cast(h.amount as double)/POW(10,h.amountPrecision)) = :amount
嘗試將其更改為
query.setParameter("amount",amount.longValue());
您在應該放置Long
值的地方傳遞了double
值。
通過更改查詢解決了問題:
"SELECT h FROM History h WHERE (CONVERT(h.amount, DECIMAL)/POW(10,h.amountPrecision)) = :amount"
嘗試這個;
query.setParameter("amount", new Double(amount));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.