在HQL

2010-08-20 27 views
3

STR()函數的使用不當有了這個的HQL查詢:在HQL

SELECT DISTINCT fs FROM FileStatus fs WHERE UPPER(STR(fs.filePath)) LIKE :FILE_PATH 

我得到:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query 
    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637) 
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74) 

,並與我FILE_PATH命名參數,我已在地圖中的以下內容:

paramMap.put("FILE_PATH", "%PATHNAME%"); 

我不知道爲什麼會發生這種情況。如果我在文件路徑中使用一個數字,比如paramMap.put("FILE_PATH", "%23%");,它會工作得很好,讓事情變得更加混亂(或者它可能會幫助所有人)。

將參數映射與查詢一起傳遞到DAO.read()方法中。休眠處理休息。類似這樣的:

fileStatusDao.read(query, parameterMap); 

在此先感謝您的幫助。

+0

您能否介紹一下如何使用HQL以及如何設置參數? – mhshams 2010-08-20 18:56:02

+0

是不是JPQL查詢,而不是HQL(看例外)? – axtavt 2010-08-20 19:10:50

+0

@axtavt:唔......不完全確定。我知道使用hibernate,並且正在爲這些hibernate寫這些查詢。 – 2010-08-20 19:18:43

回答

0

這個問題最終導致我在一個已經是字符串的屬性上使用STR()函數。

+1

您可能想重新命名您的問題以幫助其他人搜索,比如「HQL中STR()函數的錯誤用法」可能更合適:) – 2011-11-28 18:55:52

+1

好吧,沒關係。 :) – 2011-11-28 22:19:06