gpt4 book ai didi

java - 在 Spring Data JPA 存储库方法中返回 Stream 时出现 UnsupportedOperationException

转载 作者:行者123 更新时间:2023-12-02 04:20:52 33 4
gpt4 key购买 nike

我正在尝试利用 Spring Data JPA 1.8 (Fowler) 中引入的新 Java 8 Stream 支持通过将其定义为我的存储库方法之一的返回类型。

interface CustomerRepository extends Repository<Customer, Long>
{
Stream<Customer> findByLastname(String lastname);
}

当我运行应用程序时,执行存储库方法时遇到以下异常:

java.lang.UnsupportedOperationException: Streaming results is not implement for this PersistenceProvider: GENERIC_JPA

我使用 Hibernate 作为我的 JPA 提供程序,但 Spring Data 似乎无法正确检测到它。

最佳答案

我设法通过更改 EntityManagerFactory 的配置来解决该问题,我已将 entityManagerInterface 属性指定为 org.hibernate.jpa.HibernateEntityManager 和 Spring Data JPA现在能够检测到正确的 PersistenceProvider。

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="entityManagerInterface" value="org.hibernate.jpa.HibernateEntityManager" />
...
</bean>

我遇到这个问题很可能是因为我已经将 Spring Data JPA 引入到已经配置了 Hibernate/JPA 的现有应用程序中。我怀疑使用 Spring Boot 之类的典型配置的项目不会遇到同样的问题。

编辑:只是快速跟进,如果可能的话最好指定一个jpaVendorAdapter,因为它会自动配置EntityManager的各个方面,包括entityManagerInterfaceentityManagerFactoryInterfacepersistenceProviderClasshibernate.dialect 可以减少丢失某些内容的范围。

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
....
</bean>

关于java - 在 Spring Data JPA 存储库方法中返回 Stream 时出现 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784749/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com