I am trying to do the following in my HQL query:
Code:
left join fetch ms.membershipCoverages as mscov
with mscov.class = MembershipVendorTierCoverage
Unfortunately, it chokes on the 'with' keyword (error below). Is there a better/safer way to use the discriminator value as a query criteria?
Hibernate version: 3.0.5
Full stack trace of any exception that occurs:Code:
org.hibernate.hql.ast.QuerySyntaxError: unexpected token: with near line 20, column 11 [
from com.shps.da.eligibility.Member as mbr
left join fetch mbr.memberships as ms
left join fetch ms.medicalClaims as dx
left join fetch dx.providerData
left join fetch dx.visit
left join fetch dx.medicalClaimTreatments
left join fetch dx.categoryOfService
left join fetch dx.icd9Diagnosis1
left join fetch dx.icd9Diagnosis2
left join fetch dx.icd9Diagnosis3
left join fetch ms.rxClaims as rx
left join fetch rx.providerData
left join fetch mbr.cases mcase
inner join fetch mcase.serviceProgram
inner join fetch mcase.serviceProgramStatus
left join fetch mcase.closureDisposition
left join fetch ms.visits
left join fetch ms.membershipCoverages as mscov
with mscov.class = 'MembershipVendorTierCoverage'
where mbr.id = :memberId
]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:63)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:215)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:388)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:291)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1005)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:800)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:726)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1059)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:363)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:555)
at com.shps.da.dao.HibernateSessionTest.testGetSession(HibernateSessionTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:567)
Name and version of the database you are using: Oracle 10g