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



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

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

这就是我使用弹簧 jpa 获取结果集的方式

public UserDetails findByCustomerId(Predicate predicate);

这是我得到的错误:

org.springframework.data.mapping.PropertyReferenceException:找不到类型com.example.entity.UserDetails的属性找到,任何人都可以帮助我在这里实现我想要的。

你必须定义一个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/

从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());

相关内容

  • 没有找到相关文章

最新更新