]
Sebastian H. commented on HHH-6253:
-----------------------------------
Seems like I cannot use registered functions in the WHERE clause.
Registered function not being called
------------------------------------
Key: HHH-6253
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6253
Project: Hibernate Core
Issue Type: Bug
Components: core, query-hql
Affects Versions: 3.6.3, 3.6.4
Reporter: Sebastian H.
Using the following SQL Dialect
public class ServiceAppMySQL5InnoDBDialect extends MySQL5InnoDBDialect {
public ServiceAppMySQL5InnoDBDialect() {
super();
registerFunction("bitwise_and", new
SQLFunctionTemplate(StandardBasicTypes.INTEGER, "(?1 & ?2)"));
registerFunction("hasflags", new
SQLFunctionTemplate(StandardBasicTypes.BOOLEAN, "?1 & ?2 = ?2"));
}
}
and HQL query
Query q = em
.createQuery(
"SELECT o FROM "
+ entityClass.getName()
+ " o WHERE hasflags(o.status, :status)")
.setParameter("email", username)
.setParameter("status", status.getBitmask());
results in the following exception
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: ( near line
1, column 50 [SELECT o FROM tv.px.domain.Owner o WHERE hasflags(o.status, :status)]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:261)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
at
org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:272)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: