[hibernate-issues] [Hibernate-JIRA] Created: (HHH-7277) Problem with expressions in criteria CASE WHEN OTHERWISE
Srini (JIRA)
noreply at atlassian.com
Wed Apr 25 14:22:49 EDT 2012
Problem with expressions in criteria CASE WHEN OTHERWISE
---------------------------------------------------------
Key: HHH-7277
URL: https://hibernate.onjira.com/browse/HHH-7277
Project: Hibernate ORM
Issue Type: Bug
Components: query-criteria
Affects Versions: 4.1.2, 3.6.1
Environment: Windows 7, JRE 1.6, JPA 2.0, MySQL, SQL Server 10.50.1600.1
Reporter: Srini
JPA/Hibernate is not allowing to use an expression in WHEN and OTHERWISE clause of CASE statement. Following is criteria code, generated JPQL and the error it is throwing
Case<String> sectorCase = cb.selectCase();
sectorCase.when(cb.notEqual(sectors.get(Sectors_.sectorName), Constants.ACCOUNT_TYPE_RESIDENTIAL), root.get(Customers_.customerName)).
otherwise(cb.concat(root.get(Customers_.firstName), root.get(Customers_.lastName)));
List<Selection<?>> selectCols = new ArrayList<Selection<?>>();
selectCols.add(root.get(Customers_.id).alias("id"));
selectCols.add(sectorCase.alias("name"));
cq.multiselect(selectCols);
Error Details:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting "end", found '||' near line 1, column 171 [select distinct generatedAlias0.id, case when sector.sectorName<>:param0 then generatedAlias0.customerName else generatedAlias0.firstName || generatedAlias0.lastName end from com.abc.persistence.entity.Customers as generatedAlias0 left join generatedAlias0.sectors as sector order by case when sector.sectorName<>:param2 then generatedAlias0.customerName else generatedAlias0.firstName || generatedAlias0.lastName end asc]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:276)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:119)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:215)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:193)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1649)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:488)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list