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.