Java 使用查询dsl谓词选择列的最大字段

Java 使用查询dsl谓词选择列的最大字段,java,spring,predicate,querydsl,predicates,Java,Spring,Predicate,Querydsl,Predicates,我是查询dsl的新手。我使用Spring存储库来获取结果集。有一种情况,我必须获取一列的最大值,并将字段放入一个实体。我的谓词代码如下。一旦运行此代码,我就会出错 public static Predicate getMaximum(){ QUserDetails details = QUserDetails.userDetails; return details.id.eq(details.id.max()); } 这就是我如何使用SpringJPA获取我的结果集 public Us

我是查询dsl的新手。我使用Spring存储库来获取结果集。有一种情况,我必须获取一列的最大值,并将字段放入一个实体。我的谓词代码如下。一旦运行此代码,我就会出错

public static  Predicate getMaximum(){
 QUserDetails details = QUserDetails.userDetails;
 return details.id.eq(details.id.max());
 }
这就是我如何使用SpringJPA获取我的结果集

public UserDetails findByCustomerId(Predicate predicate);
这就是我得到的错误:
org.springframework.data.mapping.PropertyReferenceException:找不到类型com.example.entity.UserDetails的属性。有人能帮我在这里实现我想要的吗。

您必须定义一个
QueryDslJpaRepository
来添加QueryDslPredicateExecutor的实现

您可以在此处看到教程:

显然,要选择最大ID,您需要做的是:

from(entity).singleResult(entity.id.max())
所以是

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

谢谢。但我不希望它是直接查询。这是我已经转移到谓词。你知道如何在queryDsl谓词和spring jpaYeah中实现同样的效果吗。我已经这样做了。我以同样的方式得到了我的结果集。除此之外,所有工作都在进行,只是一次更改方法的名称,而不是以find开头。