2012-02-09 77 views
3

因此,我不斷收到標題錯誤。我使用創建查詢字符串,錯誤:運算符不存在:字符變化=數字

select p from Product p where p.productType.productTypeId in (:productTypeIds) 

這裏是java的剪輯

List<Long>partTerminologyIds = getProducTypeds(partTerminologys); 
    .......................................................................... 
    query.setParameter("partTerminologyIds", productTypeIds); 

我不知道爲什麼我收到此錯誤,ANE是partTerminolgyId在我的數據庫是一個數值18.

任何想法???

+0

你在'query.setParameter()'中有相反的參數。應該是'query.setParameter(「productTypeIds」,partTerminologyIds)'。 (您在'List ':)之後還需要一個空格:)) – 2016-01-13 16:20:48

回答

3

那麼到底它結束了是一個「外鍵」是一個表中的字符串和其他的數字。我用新腳本重建了數據庫,並沒有對新數據庫進行反向工程。

0

這看起來像一個Hibernate查詢。你需要做的query.setParameterList指定的收藏價值,否則Hibernate會不知道擴大了:productTypeIds到佔位符,而不是簡單綁定列表中的序列化的BLOB(我認爲這是一個可怕的默認值)的列表。

+0

我們使用沒有setParameterList的javax.persistence.TypedQuery。另外我應該提及這與MySQL – Landister 2012-02-09 21:37:10

+2

@ user517721一起工作:MySQL中有什麼並且不起作用保留了一定的意外因素。 – 2012-02-10 00:57:03

1

該查詢無效:

select p from Product p where p.productType.productTypeId in (:productTypeIds) 

你的意思是:

SELECT p FROM product p WHERE p.productTypeId IN (:productTypeIds) 

或者說:

SELECT * FROM product p WHERE p.productTypeId IN (:productTypeIds) 

如果是這樣,什麼是productTypeId的數據類型在你的查詢。請澄清。

+0

我知道這是比較晚,但產品類型是另一個表。 – Landister 2012-02-13 15:06:31