PagingAndSortingRepository(Spring MCV)和Hibernate

时间:2016-11-10 13:25:51

标签: java hibernate spring-mvc spring-data-jpa paging

我正在尝试使用Spring接口 PagingAndSortingRepository 创建一个分页系统。 我正在关注互联网上的一些指南,但我是第一步陷入困境。

我以这种方式实现了PagingAndSortingRepository

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

如果我尝试运行webapplication,我会收到此错误:

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

我使用 Hibernate Session 作为实体管理器。在我在互联网上看到的所有示例中,都使用了 JPA EntityManager

这是我的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 个答案:

答案 0 :(得分:1)

声明Hibernate的Session Factory将无法正常工作。 M.-Deinum写道,Spring-data-jpa存储库只能与jpa实体管理器一起使用。

尝试此配置:

    <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>

答案 1 :(得分: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();