1

我正在尝试使用 EntityGraph 获取一些惰性集合

在我的实体上

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

存储库

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

使用本机查询时,我遇到了下一个异常

java.lang.ClassCastException: org.hibernate.internal.SQLQueryImpl 不能在 org.hibernate.jpa 的 org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:604) 中转换为 org.hibernate.internal.QueryImpl。 internal.QueryImpl.getSingleResult(QueryImpl.java:529) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:372) 在 com.sun.proxy.$ org.springframework.data.jpa.repository.query 中的 Proxy276.getSingleResult(Unknown Source)。JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:206) 在 org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:78) 在 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) 在 org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)在 org.springframework。data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at ...... .....................在 org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)

使用 JPQL 查询时一切正常。但是我有很大的本地查询,转换为 JPQL 非常痛苦。有谁知道这种情况下的解决方法?将不胜感激任何帮助。

4

0 回答 0