2015-09-25 99 views
0

我想通過將其定義爲我的一個存儲庫方法的返回類型來利用Spring Data JPA 1.8 (Fowler)中介紹的新的Java 8 Stream支持。UnsupportedOperationException在Spring數據庫中返回Stream時的數據JPA存儲庫方法

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提供者,但它並不像春天的數據能夠正確檢測它。

回答

2

我已成功通過改變的EntityManagerFactory的配置來解決這個問題,我已指定entityManagerInterface財產org.hibernate.jpa.HibernateEntityManager和Spring數據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>