java - HQL: select statement along with using 'case when then' giving unexpected token error -


i facing issue in writing hql query.

i have mysql table named mytable column names id , column1,column2 , type. fields integer type.

the select query based on value in 'type' column . if value in 'type' column 0 select query based value in column1. if value in type column 1 select query based on value in column2.

i have written query using 'case when then' sql successfully. same query giving exception when using hql query

sql query:

select *  mytable case when type=0 column1=234 when type=1       column2=564 end; 

hql query:

from mytableobj obj case when obj.type=0 obj.column1=234 when obj.type=1 obj.column2=564 end;  

gives following error,

 17:30:16,197 error [parser] line 1:127: unexpected token: =  17:30:16,198 error [parser] line 1:134: unexpected token: end  17:30:16,199 warn  [hqlparser] processequalityexpression() : no expression process!  org.hibernate.hql.ast.querysyntaxexception: unexpected token: = near line 1, column 127 [from mytableobj obj case when obj.type=0 obj.column1=234 when obj.type=1 obj.column2=564 end]     @ org.hibernate.hql.ast.querysyntaxexception.convert(querysyntaxexception.java:54)     @ org.hibernate.hql.ast.querysyntaxexception.convert(querysyntaxexception.java:47)     @ org.hibernate.hql.ast.errorcounter.throwqueryexception(errorcounter.java:82)     @ org.hibernate.hql.ast.querytranslatorimpl.parse(querytranslatorimpl.java:281)     @ org.hibernate.hql.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:180)     @ org.hibernate.hql.ast.querytranslatorimpl.compile(querytranslatorimpl.java:134)     @ org.hibernate.engine.query.hqlqueryplan.<init>(hqlqueryplan.java:101)     @ org.hibernate.engine.query.hqlqueryplan.<init>(hqlqueryplan.java:80)     @ org.hibernate.engine.query.queryplancache.gethqlqueryplan(queryplancache.java:94)     @ org.hibernate.impl.abstractsessionimpl.gethqlqueryplan(abstractsessionimpl.java:156)     @ org.hibernate.impl.abstractsessionimpl.createquery(abstractsessionimpl.java:135)     @ org.hibernate.impl.sessionimpl.createquery(sessionimpl.java:1650) 

thanks in advance

i did similar, value of condition same, thing changes according value in db column. here example:

select t.* table t case when t.column1 = 1    t.column2    else t.column3 end = 123; 

this worked me. if want value (123 in example) dependent on condition column, can use case statement too.

check this example in sql, should work hql well.


Popular posts from this blog

How to calculate SNR of signals in MATLAB? -

c# - Attempting to upload to FTP: System.Net.WebException: System error -

ios - UISlider customization: how to properly add shadow to custom knob image -