java - 使用 Spring JPA 按名称 ASC 排序
问题描述
我需要按名称升序排序,这些值来自 JPA 的 DB。我需要排序Categories
, Subcategories
(它们是类别对象的子对象)和GlobalTags
. 这三个都继承自 Tag 类。
这是我的存储库:
@Repository
@Transactional
public interface TagDao extends JpaRepository<Tag, Long> {
List<Tag> findTagsByNameAndTagType(String tagName, String tagType);
}
这是ServiceImpl
的findAllTags()
。
@Transactional(readOnly = true)
@Override
public ResponseGetTagsDto findAllTags() {
Set<Tag> tags = new HashSet<>(tagDao.findAll());
Set<Tag> globalTags = tags.stream().filter(tag -> GLOBAL == TagType.valueOf(tag.getTagType().toUpperCase())).collect(Collectors.toSet());
Set<Tag> categoryTags = tags.stream().filter(tag -> CATEGORY == TagType.valueOf(tag.getTagType().toUpperCase())).collect(Collectors.toSet());
Set<SubcategoryTag> subcategoryTags = tags.stream().filter(tag -> SUBCATEGORY == TagType.valueOf(tag.getTagType().toUpperCase())).map(SubcategoryTag.class::cast).collect(Collectors.toSet());
log.info("found tags: {}", tags);
return ResponseGetTagsDto.builder()
.globalTags(globalTags.stream()
.map(globalTag ->
GlobalTagDto.builder()
.id(globalTag.getId())
.name(globalTag.getName())
.tagType(globalTag.getTagType())
.build()).collect(Collectors.toSet()))
.categoryTags(categoryTags.stream()
.map(ct -> CategoryTagDto.builder()
.id(ct.getId())
.name(ct.getName())
.tagType(ct.getTagType())
.subcategoryTags(subcategoryTags.stream()
.filter(subcategoryTag -> subcategoryTag.getCategoryTag().getId().equals(ct.getId()))
.map(subcategoryTag -> SubcategoryTagDto.builder()
.id(subcategoryTag.getId())
.name(subcategoryTag.getName())
.tagType(subcategoryTag.getTagType())
.parentTagId(ct.getId())
.build())
.collect(Collectors.toSet())
)
.build())
.collect(Collectors.toSet())
)
.build();
}
我试图做这样的事情:[https://www.baeldung.com/spring-data-sorting],但是在 Postman 中访问它时,我得到了未排序的数据。
解决方案
问题是我在使用Set
JPA 查询从数据库中检索数据后用来存储数据。Set
不存储订购的数据。
推荐阅读
- php - 在 codeigniter 中分页时使用 REGEXP 和 where 条件
- swift - 线程 1:“无法在包中加载 NIB:'NSBundle(已加载)',名称为 'SleepThreeCollectionViewCell'”
- python - 使用 python PIL 访问 R、G、B 值
- reactjs - 如何使用 react + redux 在传单 v3 中获取地图属性和处理事件?
- r - 建立一个函数来计算R中的相关矩阵
- python - 如何检查某人是否在列表中
- python - Pyspark:如何仅在具有 NotNull 值的行上应用 UDF
- java - Java 和休眠错误。无法实例化持久化器 org.hibernate.persister.entity.SingleTableEntityPersister
- c++ - 从文件读取输入到特定字符 cpp
- azure - 使用“发布设置”文件创建 Azure 对象