当两个相似的存储库时如何消除代码重复?

How to rid of code duplication when two similar repositories?

根据给定的类型,我想从一个或另一个报告中检索数据。这是我想出的:

        if (type.equals("first")) {
            codes = firstRepository.findAll().stream()
                    .map(numbers::getCode)
                    .collect(Collectors.toList());
        } else {
            codes = secondRepository.findAll().stream()
                    .map(numbers::getCode)
                    .collect(Collectors.toList());
        }

现在我正在寻找一个优雅的解决方案来删除代码重复。

是这样的吗?

codes = (type.equals("first") ? firstRepository : secondRepository).findAll().stream()
    .map(numbers::getCode)
    .collect(Collectors.toList());

我宁愿将两个存储库中的方法添加到 return 所有代码作为列表:

public interface FirstRepository extends JpaRepository<Long, First>
{
    List<First> findAllByCode();
}

public interface SecondRepository extends JpaRepository<Long, Second>
{
    List<Second> findAllByCode();
}