我有一张像这样的 table
ColA ColB
Name1 1
Name1 2
Name2 1
Name2 3
Name2 5
我想获取我的结果集
ColA ColB
Name1 1
Name2 1
我们如何在 Spring Data JPA 规范中实现它?
最佳答案
在您的存储库界面中添加以下代码。我认为它应该有效。
@Async
@Query(value = "select * " +
" from TableA ta " +
"where ta.colb = :colb",nativeQuery=true)
List<T> findByColA(@Param("colb") String colb);
或
有规范
创建规范对象:
规范的标准函数(SUM、MAX 或 MIN):
javax.persistence.criteria.CriteriaQuery<T>
检查此界面以查找更多信息。
final class UserSpecifications {
private UserSpecifications() {}
static Specification<User> findData(String colb, String columnName) {
return new Specification<User>() {
public Predicate toPredicate(Root<User> root,
CriteriaQuery<?> query,
CriteriaBuilder cb) {
root = query.from(User.class);
Predicate colbp = cb.equal(root.get(columnName), colb);
Expression<String> groupByExp = root.get(columnname).as(String.class);
query.where(colbp);
query.select(cb.min(root.get(column.getName())));
query.groupBy(groupByExp);
}
}
}
}
Specification<User> spec = UserSpecifications.findData("1", "columnName");
List<User> allUsers = repository.findAll(spec);
规范示例:Spring Data specification
Spring 规范示例:Spring Specification How-to
Stackoverflow 引用:Spring Specification
关于sql - Spring Data Jpa规范给定问题的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254908/