Spring Boot & Data Repositories - реализация фрагмента x не реализует x

Я обновился с Spring Boot v.1.5.8 to v.2.1.5. Когда я пытаюсь запустить приложение, я получаю следующую ошибку:

IllegalArgumentException: Fragment implementation .OtmUniParentRepository2019GeneratedImpl$$EnhancerBySpringCGLIB$$cdf9e294 does not implement x.OtmUniParentRepository2019Generated!

Почему я больше не могу начать?

Файлы:

OtoUniChildRepository2019

@RepositoryRestResource(collectionResourceRel = "OtoUniChild2019", path = "OtoUniChild2019")
public interface OtoUniChildRepository2019 extends OtoUniChildRepository2019Generated {

}

@Transactional
class OtoUniChildRepository2019Impl extends HeartcoreRepositoryImpl<OtoUniChild> {

    @PostConstruct
    private void setIni() {
        super.setIni(OtoUniChild.TABLENAME, OtoUniChild.getColumnName(), OtoUniChild.class, "AGRIDB2019");
    }

}

OtoUniChildRepository2019Сгенерировано

public interface OtoUniChildRepository2019Generated extends HeartcoreRepository<OtoUniChild>  {


    OtoUniChild findByIdAndOtoUniParentIsNotNull(@Param("id") String id);

    OtoUniChild findByOtoUniParentId(@Param("id") String id);

}

@Transactional
class OtoUniChildRepository2019GeneratedImpl extends HeartcoreRepositoryImpl<OtoUniChild> {

    @PostConstruct
    private void setIni() {
        super.setIni(OtoUniChild.TABLENAME, OtoUniChild.getColumnName(), OtoUniChild.class, "AGRIDB2019");
    }

}

HeartcoreРепозиторий

@NoRepositoryBean
public interface HeartcoreRepository<T extends Heartcore> extends RevisionRepository<T, String, Integer>, PagingAndSortingRepository<T, String>, HeartcoreCustomRepository<T> {

    @Override
    T findOne(String id);

    boolean existsById(String id);

    @Override
    Collection<T> findAll();

    List<T> findAllByKanton(@Param("kanton") String kanton);
}

HeartcoreCustomRepository

public interface HeartcoreCustomRepository<T extends Heartcore> {

    List<T> findCustom(String sqlQuery);

    List<T> findCustom(String select, String where);

    Class<T> getType();

    T findOne(String id);

    Collection<T> findAll();

     String getSequence(String sequenceName);
}

HeartcoreCustomRepositoryImpl

@Transactional
public class HeartcoreRepositoryImpl<T extends Heartcore> implements HeartcoreCustomRepository<T> {

    @PersistenceContext
    protected EntityManager entityManager;

    // irrelevant code

    public void setIni(String tablename, List<String> columns, Class<T> type, String schema) {
        this.tablename = tablename;
        this.columns = columns;
        this.type = type;
        this.schema = schema;

        MultitenantDataSource multitenantDataSource = (MultitenantDataSource) entityManager.getEntityManagerFactory().getProperties().get("hibernate.connection.datasource");
        DataSource dataSource = (DataSource) multitenantDataSource.determineTargetDataSource();
        try {
            this.dbDriver = dataSource.getConnection().getMetaData().getDriverName();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

// irrelevant code

С 1.5.8 все работает нормально, и я не смог найти информацию о критических изменениях.

РЕДАКТИРОВАТЬ: что-то не так с этой структурой наследования репозиториев? Я пробовал несколько разных подходов, но ни один из них не работал. Есть ли другой способ реализовать некоторые базовые функции для репозиториев?


person Sven M.    schedule 06.06.2019    source источник
comment
Похоже, неправильная версия cglib   -  person Jens    schedule 06.06.2019
comment
@Jens Нужно ли мне указывать это, если мы никогда не меняем его вручную?   -  person Sven M.    schedule 06.06.2019
comment
Соглашения об именах для пользовательских реализаций изменились в версии 2.0. См. stackoverflow.com/a/52624752/66686.   -  person Jens Schauder    schedule 07.06.2019