ReflexRule method breaks before reaching the Assertion stage

Hello @Moses_Mutesasira, @mherman22, @tasksolver, I’ve been writing tests for the TestReflexService class, but this public ReflexRule getReflexRuleByAnalyteId(String analyteId) throws LIMSRuntimeException breaks even before reaching the Assertion stage.
I tried debugging it and it looks like there problem lies here: String sql = "from ReflexRule r WHERE r.analyteId = :analyteId"; because ReflexRule has no hibernate mapping and its not a table too.

Please, I need some advice on how to fix this in order to continue with the tests.

Error logs

Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:757)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:848)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114)
	at org.openelisglobal.testreflex.daoimpl.ReflexRuleDAOImpl.getReflexRuleByAnalyteId(ReflexRuleDAOImpl.java:25)
	... 49 more

Reflex rule has Hibernate Mappings

But probably you need to add it to the the List of entities here for Hibernate to load the mappings

Well, I mean the Hibernate-mapping xml file like here these files
Isn’t it necessary?

Those are XML-based mappings , newer version of Hibernate support Annotation based mappings

Okay, though I’ve added it to the list of entities as suggested but am still facing the same problem

Error logs

23 Jun 2025 18:04:26 -- ERROR -- Class: org.hibernate.internal.ExceptionConverterImpl, Method: convert, Line: 138, Message: org.hibernate.QueryException: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
Class: org.hibernate.QueryException, Method: generateQueryException, Line: 120, Sub-Message: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
Class: org.hibernate.hql.internal.classic.FromParser, Method: token, Line: 158, Sub-Message: in expected: r
23 Jun 2025 18:04:26 -- ERROR -- Class: org.hibernate.internal.ExceptionConverterImpl, Method: convert, Line: 138, Message: org.hibernate.QueryException: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
Class: org.hibernate.QueryException, Method: generateQueryException, Line: 120, Sub-Message: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
Class: org.hibernate.hql.internal.classic.FromParser, Method: token, Line: 158, Sub-Message: in expected: r

org.openelisglobal.common.exception.LIMSRuntimeException: Error in ReflexRuleDAOImpl getReflexRuleByAnalyteId()

	at org.openelisglobal.common.daoimpl.BaseDAOImpl.handleException(BaseDAOImpl.java:768)
	at org.openelisglobal.testreflex.daoimpl.ReflexRuleDAOImpl.getReflexRuleByAnalyteId(ReflexRuleDAOImpl.java:32)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
	at jdk.proxy2/jdk.proxy2.$Proxy464.getReflexRuleByAnalyteId(Unknown Source)
	at org.openelisglobal.testreflex.service.TestReflexServiceImpl.getReflexRuleByAnalyteId(TestReflexServiceImpl.java:311)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:216)
	at jdk.proxy2/jdk.proxy2.$Proxy465.getReflexRuleByAnalyteId(Unknown Source)
	at org.openelisglobal.testreflex.TestReflex.testGetReflexRuleByAnalyteId(TestReflex.java:24)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76)
	at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:757)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:848)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114)
	at org.openelisglobal.testreflex.daoimpl.ReflexRuleDAOImpl.getReflexRuleByAnalyteId(ReflexRuleDAOImpl.java:25)
	... 49 more
Caused by: org.hibernate.QueryException: in expected: r [from ReflexRule r WHERE r.analyteId = :analyteId]
	at org.hibernate.QueryException.generateQueryException(QueryException.java:120)
	at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
	at org.hibernate.hql.internal.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:250)
	at org.hibernate.hql.internal.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:204)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:112)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162)
	at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:636)
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:748)
	... 52 more
Caused by: org.hibernate.QueryException: in expected: r
	at org.hibernate.hql.internal.classic.FromParser.token(FromParser.java:158)
	at org.hibernate.hql.internal.classic.ClauseParser.token(ClauseParser.java:93)
	at org.hibernate.hql.internal.classic.PreprocessingParser.token(PreprocessingParser.java:118)
	at org.hibernate.hql.internal.classic.ParserHelper.parse(ParserHelper.java:43)
	at org.hibernate.hql.internal.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:240)
	... 58 more


what have you added ??

The ReflexRule entity!

<class>org.openelisglobal.testreflex.action.bean.ReflexRule</class>

do you have a PR for you WIP ??

have you added the package under Spring component scan ?

Yeah, I was working on the integration tests for the Test Reflex class, that’s where I met that challenge, and I started on another issue

Surely, I did that, infact its what I did first :smiley:

Can you create a draft PR ?

Sure thing, here it is

I’ve just found that the link wasn’t working.
But I’ve fixed it. Sorry for the inconvenience.