выбор максимального поля столбца с использованием предиката запроса dsl

Я новичок в запросе dsl. Я использую репозитории Spring для получения набора результатов. И в одном случае мне нужно получить максимум столбца и получить поля в сущность. Мой код предиката ниже. Я получаю сообщение об ошибке, как только запускаю это код.

public static  Predicate getMaximum(){
 QUserDetails details = QUserDetails.userDetails;
 return details.id.eq(details.id.max());
 }

И вот как я получаю свой набор результатов, используя spring jpa

public UserDetails findByCustomerId(Predicate predicate);

И это ошибка, которую я получаю:

org.springframework.data.mapping.PropertyReferenceException: свойство не найдено для типа com.example.entity.UserDetails. Может ли кто-нибудь помочь мне достичь того, что я хочу здесь.


person Deepak Ramakrishnan Kalidass    schedule 12.02.2014    source источник


Ответы (2)


Вы должны определить QueryDslJpaRepository, который добавляет реализацию для QueryDslPredicateExecutor.

http://docs.spring.io/spring-data/jpa/docs/1.5.0.M1/api/org/springframework/data/jpa/repository/support/QueryDslJpaRepository.html

Вы можете увидеть учебник здесь:

http://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-eight-adding-functionality-to-a-repository/

person Andres    schedule 12.02.2014
comment
Спасибо. Но я хочу, чтобы это был не прямой запрос. Вот и я перешел к предикатам. Знаете ли вы, как добиться того же в предикатах queryDsl и spring jpa - person Deepak Ramakrishnan Kalidass; 12.02.2014
comment
Да.. Я уже сделал это. И я получаю свои наборы результатов таким же образом. Все работает, кроме этого. - person Deepak Ramakrishnan Kalidass; 12.02.2014
comment
Попробуйте изменить имя метода ti на что-то, что не начинается с find. - person Andres; 12.02.2014

Из группы электронной почты QueryDSL. выберите максимальный идентификатор:

from(entity).singleResult(entity.id.max())

So it's

JPAQuery jpaQuery = new JPAQuery(entityManager);
QEntity qEntity = QEntity.entity;
Long maxId = query.from(qEntity).singleResult(qEntity.id.max());
person EpicPandaForce    schedule 29.08.2016