2017-02-03 14 views
2

ハイバネートという名前のクエリを実行したいが、そのハイバネート構文例外を実行したい。 SQLでは、適切に実行されている。..chartはクエリパラメータとクエリ値=​​として来るでしょうか?大文字と小文字を区別しないハイバーネーションでの検索

SELECT * FROM faq WHERE UPPER(answer) LIKE UPPER('%chart%') 

select f from Faq f where lower(f.question) like lower('%:query%') or lower(f.answer) like lower('%:query%') 

@NamedQuery(name = "findQuesAnsByQuery", query = "select f from Faq f where lower(f.question) like lower('%:query%') or lower(f.answer) like lower('%:query%')") 

トレース:

[0] = {[email protected]}"org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)" 
[1] = {[email protected]}"org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)" 
[2] = {[email protected]}"org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)" 
[3] = {[email protected]}"org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)" 
[4] = {[email protected]}"org.springframework.orm.hibernate3.HibernateTemplate.findByNamedQuery(HibernateTemplate.java:979)" 
[5] = {[email protected]}"org.springframework.orm.hibernate3.HibernateTemplate.findByNamedQuery(HibernateTemplate.java:971)" 
[6] = {[email protected]}"com.hk.impl.dao.BaseDaoImpl.findByNamedQuery(BaseDaoImpl.java:157)" 
+0

スタックトレースを添付してください –

答えて

1

私はあなたの問題は '%:クエリ%' を使用していると思うクエリで..これに変更します。

@NamedQuery(name = "findQuesAnsByQuery" 
    , query = "select f from Faq f 
     where lower(f.question) like lower(CONCAT('%', :query, '%')) 
      or lower(f.answer) like lower(CONCAT('%', :query, '%'))") 

または

@NamedQuery(name = "findQuesAnsByQuery" 
     , query = "select f from Faq f 
      where lower(f.question) like lower(:query) 
       or lower(f.answer) like lower(:query)") 

次に、パラメータ:

.setString("query", "%" + query+ "%") 
+0

その動作しません –

+0

同じエラーが表示されますか? –

+0

はい異なる方法を試してみてくださいbtは機能しません –

関連する問題