我是查询 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());