Spring Data - PagingAndSortingRepository с пользовательским запросом (HQL)? - PullRequest
0 голосов
/ 08 октября 2018

Попытка смешать 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;
       }
   }
}

Репо, введенное вservice:

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 по обеспечению обработки подкачки / сортировки.

1 Ответ

0 голосов
/ 08 октября 2018

Если SitesDbRecord имеет логическое свойство с именем active, оно должно быть:

public interface SiteRepository extends PagingAndSortingRepository<SitesDbRecord, Integer> {
    public List<SitesDbRecord> findByActiveIsTrue( Pageable pageable );
    public List<SitesDbRecord> findByActiveIsTrue();
}

Нет необходимости расширять свой пользовательский репозиторий, просто реализуйте PagingAndSortingRepository

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...