[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