Utilice la superclase abstracta como parámetro para el repositorio de datos de Spring

Conozco la implementación del repositorio de datos de Spring:

Crea una interfaz como esta:

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

AhoraCountry es unAbstractCatalog y tengo (muchos) más catálogos en el proyecto mío.
Me pregunto si puedo hacer 1 repositorio que debería funcionar para todos los catálogos:

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

Ahora con guardar no veo directamente un problema, pero si quiero buscar unAbstractCatalog Ya estoy seguro de que golpearé la pared porque el repositorio no sabrá de qué objeto debe elegir.

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
}

¿Alguien tiene una idea de cómo podría hacer 1 Repo para todas las implementaciones deAbstractCatalog sin crear la misma interfaz una y otra vez con solo el mínimo cambio de nombre y clase de implementación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta