1

I'm trying to fetch some Lazy collection using EntityGraph

on my Entity

@Entity
@Table
......
 @NamedEntityGraph(name = "getDetails", attributeNodes = { @NamedAttributeNode(value = "prices") })
    @NamedNativeQuery(name = "MyTable.getData", query = "SELECT * FROM MyTable", resultClass = MyTable.class)

Repository

@Query(nativeQuery = true)
    @EntityGraph(value = "getDetails", type = EntityGraphType.FETCH)
            MyTable findData();

When using native query I got next exception

java.lang.ClassCastException: org.hibernate.internal.SQLQueryImpl cannot be cast to org.hibernate.internal.QueryImpl at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:604) at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:529) 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:498) at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:372) at com.sun.proxy.$Proxy276.getSingleResult(Unknown Source) at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:206) at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:78) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:102) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:92) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:482) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at ..................................................... at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)

When using JPQL query all works fine. But I have big native query which is very painful translate to JPQL. Does anyone knows workaround in this situation? Will appreciate any help.

Oleg Kuts
  • 769
  • 1
  • 13
  • 26

0 Answers0