Использовать абстрактный суперкласс в качестве параметра для хранилища данных Spring

Я знаю реализацию репозитория данных Spring:

Создайте такой интерфейс:

public interface CountryRepository extends CrudRepository<Country, Long> {}

СейчасCountry являетсяAbstractCatalog и у меня есть (намного) больше каталогов в моем проекте.
Мне интересно, могу ли я сделать 1 репозиторий, который должен работать для всех каталогов:

public interface AbstractCatalogRepository extends CrudRepository<AbstractCatalog, Long> {}

Теперь с сохранением я не вижу проблемы напрямую, но если я хочу найтиAbstractCatalog Я уже уверен, что ударю стену, потому что репо не будет знать, из какого объекта он должен выбрать.

AbstractCatalog.class
@MappedSuperclass
public abstract class AbstractCatalog extends PersistentEntity {

    /**
     * The Constant serialVersionUID.
     */
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    /**
     * The code.
     */
    @Column(unique = true, nullable = false, updatable = false)
    private String code;
    /**
     * The description.
     */
    @Column(nullable = false)
    private String description;
    /**
     * The in use.
     */
    @Column(name = "IN_USE", nullable = false, columnDefinition = "bit default 1")
    private Boolean inUse = Boolean.TRUE;

    // getters and setters
}
Country.class
@Entity
@Table(name = "tc_country")
@AttributeOverrides({
    @AttributeOverride(name = "id", column =
            @Column(name = "COUNTRY_SID")),
    @AttributeOverride(name = "code", column =
            @Column(name = "COUNTRY_CODE")),
    @AttributeOverride(name = "description", column =
            @Column(name = "COUNTRY_DESCRIPTION"))})
public class Country extends AbstractCatalog {

    public static final int MAX_CODE_LENGTH = 11;

    @Column(name = "GEONAMEID", nullable = true, unique = false)
    private Long geonameid;

    // getter and setter
}

Кто-нибудь знает, как я мог бы просто сделать 1 репо для всех реализацийAbstractCatalog без создания одного и того же интерфейса снова и снова с минимальным изменением имени и класса реализации?

Ответы на вопрос(3)

Ваш ответ на вопрос