我有一张类似
的桌子ColA ColB
Name1 1
Name1 2
Name2 1
Name2 3
Name2 5
我想将结果集提取为
ColA ColB
Name1 1
Name2 1
我们如何在spring data JPA规范中实现它?
答案 0 :(得分:2)
在您的存储库界面中添加以下代码。我认为应该可以。
@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 Specification How-to
Stackoverflow参考:Spring Specification