TrieNodeRepository.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package com.snapshot.repository;
  2. import com.snapshot.entity.TrieNode;
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4. import org.springframework.data.jpa.repository.Query;
  5. import org.springframework.data.repository.query.Param;
  6. import org.springframework.stereotype.Repository;
  7. import java.util.List;
  8. import java.util.Optional;
  9. /**
  10. * 字典树节点Repository接口
  11. */
  12. @Repository
  13. public interface TrieNodeRepository extends JpaRepository<TrieNode, Long> {
  14. /**
  15. * 根据父节点ID和节点字符查找子节点
  16. */
  17. Optional<TrieNode> findByParentIdAndNodeKey(Long parentId, String nodeKey);
  18. /**
  19. * 查找指定上传记录的所有节点
  20. */
  21. List<TrieNode> findByUploadId(String uploadId);
  22. /**
  23. * 根据前缀查找匹配的叶子节点(完整ID)
  24. */
  25. @Query("SELECT tn FROM TrieNode tn WHERE tn.uploadId IS NOT NULL " +
  26. "AND tn.uploadId LIKE CONCAT(:prefix, '%') " +
  27. "ORDER BY tn.uploadId")
  28. List<TrieNode> findByPrefix(@Param("prefix") String prefix);
  29. /**
  30. * 删除指定上传记录的所有字典树节点
  31. */
  32. void deleteByUploadId(String uploadId);
  33. }