【发布时间】:2019-03-13 06:09:13
【问题描述】:
尝试将 PagingAndSortingRepository 与自定义查询混合使用,但没有成功..
自定义仓库:
public interface SiteRepositoryCustom
{
public List<SitesDbRecord> getActiveSites();
}
实施回购:
@Repository
public class SiteRepositoryImpl implements SiteRepositoryCustom
{
private static final Logger logger = ...
@PersistenceContext
private EntityManager em;
@Override
public List<SitesDbRecord> getActiveSites()
{
logger.info( "getActiveSites start" );
try
{
String hql = "select s from SitesDbRecord s where s.isActive = true";
return em.createQuery( hql ).setMaxResults( Integer.MAX_VALUE ).getResultList();
}
catch ( Exception e )
{
logger.error( "getActiveSites failed.", e );
return null;
}
}
}
注入服务的repo:
public interface SiteRepository extends PagingAndSortingRepository<SitesDbRecord, Integer>, SiteRepositoryCustom {
public List<SitesDbRecord> getActiveSites( Pageable pageable );
public List<SitesDbRecord> getActiveSites();
}
如果我只是扩展 CrudRepository(没有 Pageable 方法),那么一切都很好。尝试扩展 PagingAndSortingRepository(使用或不使用 Pageable 方法)然后 Spring 无法启动
PropertyReferenceException: No property getActiveSites found for type SitesDbRecord!
将 PagingAndSortingRepository 与自定义查询一起使用的正确方法是什么?可能弄错了,但我认为提供分页/排序处理是 Spring 的责任。
【问题讨论】:
-
你试过@Query注解吗?
-
用 Spring 做我的第一步,不熟悉这个.. 应该有帮助吗?
-
因为
getActiveSites( Pageable pageable )没有实现。只需删除此方法或将其移至SiteRepositoryCustom并在SiteRepositoryImpl中实现即可。
标签: spring-boot spring-data-jpa spring-data