Trying to return a list of Actions from the database using hibernate entity manager method.
It is a simple repository method that has worked in the past, yet for some reason, it now throws an ArrayIndexOutOfBoundsException when called, specifically on the .getResultsList() line.
The repository class:
@Stateless
public class ForensicActionRepository {
@PersistenceContext(name = "default")
private EntityManager entityManager;
public List<ForensicAction> getAllForensicActions() {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<ForensicAction> query = cb.createQuery(ForensicAction.class);
Root<ForensicAction> root = query.from(ForensicAction.class);
query.select(root);
return entityManager.createQuery(query).getResultList();
}
The entity class:
@Entity
public class ForensicAction implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String forensicLogTemplate;
private SubmissionStatus submissionStatus;
private boolean archived;
@OneToMany(cascade = CascadeType.ALL)
private Collection<ActionFlag> actionFlags = new ArrayList<>();
// Getter & Setter methods...
I've turned show SQL on and before the exception, hibernate generates the follow SQL:
14:52:44,132 INFO [stdout] (default task-6) Hibernate:
14:52:44,133 INFO [stdout] (default task-6) select
14:52:44,133 INFO [stdout] (default task-6) forensicac0_.id as id1_16_,
14:52:44,133 INFO [stdout] (default task-6) forensicac0_.archived as archived2_16_,
14:52:44,133 INFO [stdout] (default task-6) forensicac0_.forensicLogTemplate as forensic3_16_,
14:52:44,133 INFO [stdout] (default task-6) forensicac0_.submissionStatus as submissi4_16_,
14:52:44,133 INFO [stdout] (default task-6) forensicac0_.title as title5_16_
14:52:44,133 INFO [stdout] (default task-6) from
14:52:44,133 INFO [stdout] (default task-6) ForensicAction forensicac0_
Which leads to this error immediately after:
14:52:44,200 ERROR [org.jboss.as.ejb3.invocation] (default task-6) WFLYEJB0034: EJB Invocation failed on component ForensicActionRepository for method public java.util.List uk.police.ecis.dfcms.repository.ForensicActionRepository.getAllForensicActions(): javax.ejb.EJBException: java.lang.ArrayIndexOutOfBoundsException: 16
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:246)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:362)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:144)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:72)
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:89)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:47)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.deployment.processors.StartupAwaitInterceptor.processInvocation(StartupAwaitInterceptor.java:22)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:67)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:60)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:438)
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:619)
at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:57)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:198)
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:81)
at uk.police.ecis.dfcms.repository.ForensicActionRepository$$$view47.getAllForensicActions(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:410)
at org.jboss.weld.module.ejb.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:134)
at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)
at org.jboss.weld.module.ejb.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(InjectionPointPropagatingEnterpriseTargetBeanInstance.java:68)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106)
at uk.police.ecis.dfcms.repository.ForensicActionRepository$Proxy$_$$_Weld$EnterpriseProxy$.getAllForensicActions(Unknown Source)
at uk.police.ecis.dfcms.service.ForensicActionProcessBean.getAllForensicActions(ForensicActionProcessBean.java:34)
at uk.police.ecis.dfcms.view.ActionController.init(ActionController.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:181)
at com.sun.el.parser.AstValue.invoke(AstValue.java:289)
I cannot seem to identify any part of the process that would cause this simple hibernate method to fail, where it once worked.