2016-11-10 86 views
0

我正在嘗試使用Spring界面創建分頁系統PagingAndSortingRepository。 我正在關注互聯網上的一些指南,但我被困在第一步。PagingAndSortingRepository(Spring MCV)和Hibernate

我實現PagingAndSortingRepository這樣

public interface ArtistaRepository extends PagingAndSortingRepository<Artista,Integer> { 
    List<Artista> findByNome(String nome); 
} 

如果我嘗試運行web應用我得到這個錯誤:

No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined 

我用Hibernate的Session實體管理器。在互聯網上看到的所有例子中,使用了JPA實體管理器,

這是我configuration.xml配置文件中的代碼:

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" />    
    </bean>  

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"/>    
     <property name="packagesToScan" value="com.jeansedizioni.model"/> 
    </bean> 

因爲我沒有使用JPA EntityManager的,我應該怎麼修改我的密碼?

謝謝你提前

+2

使用一個'EntityManager' ...該項目被稱爲'彈簧數據JPA'的一個原因。它是關於JPA,因此是一個'EntityManager'而不是'SessionFactory'。 –

+0

你可以添加你的配置嗎?從可用的信息中,我可以告訴你,在Spring中聲明sessionFactory不會像實體管理器那樣自動工作,你應該配置一個'entityManagerFactory',就像錯誤所說的那樣。這[文檔](http://docs.spring.io/spring-data/jpa/docs/1.10.4.RELEASE/reference/html/#jpa.repositories)應該是有用的。 –

+0

我編輯了我的代碼 – MDP

回答

1

聲明Hibernate的會話工廠將無法正常工作。 Spring-data-jpa倉庫只能與jpa實體經理一起工作,正如M. Deinum寫的。

試試這個配置:

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="showSql" value="true"/> 
    <property name="generateDdl" value="false"/> 
    <property name="database" value="<your database - Oracle, MySQL...>"/> 
</bean> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> 
    <property name="persistenceUnitName" value="default"/> 
    <!-- spring based scanning for entity classes>--> 
    <property name="packagesToScan" value="com.jeansedizioni.model"/> 
</bean> 


<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 
0

試試這個代碼我希望它對你有用。

//庫代碼

public interface ArtistaRepository extends JpaRepository<Artista,Integer> { 
    Page<Artista> findByNome(String nome,Pageable page); 
} 

//服務代碼

int totalElements; 
    int totalPages; 
    int numberOfElements; 

Pageable pageable = new PageRequest(page,size,Sort.Direction.DESC,"id"); 

Page<Artista> list=artistaRepository.findByNome(nome,pageable); 

totalElements=list.getTotalElements(); 
numberOfElements=list.getNumberOfElements(); 
totalPages=list.getTotalPages();