2

我是查询 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 的属性。谁能帮我实现我想要的。

4

2 回答 2

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/

于 2014-02-12T09:31:20.970 回答
0

QueryDSL 电子邮件组中,显然您必须执行以下操作才能选择最大 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());
于 2016-08-29T08:13:24.750 回答