Java: как переопределить этот универсальный метод?

public <S extends T> List<S> save(Iterable<S> entities) {
        //...
}

Если я использую следующий метод для переопределения

@Override
public List<MyType> save(Iterable<MyType> structures) {
    List<MyType> result = new ArrayList<>();
    //...
    return result;
}

Я получаю следующую ошибку:

method does not override or implement a method from a supertype

name clash: save(Iterable<MyType>) in MyTypeRepositoryImpl and <S>save(Iterable<S>) in SimpleJpaRepository have the same erasure, yet neither overrides the other
  where S,T are type-variables:
    S extends T declared in method <S>save(Iterable<S>)
    T extends Object declared in class SimpleJpaRepository

Как я могу решить это? Мне не нужен метод, чтобы быть универсальным, и на самом деле это не должно быть. Я имею в виду, что

@Override
public <S extends MyType> List<S> save(Iterable<S> structures) {
    List<S> result = new ArrayList<>();
    //...
    return result;
}

Не будет работать, так как метод может создать новый объект MyType, который не «совместим» с List.

Как я могу сделать эту работу?

РЕДАКТИРОВАТЬ:

В целях разъяснения. Я пытаюсь переопределить различные методы save () данных Spring SimpleJpaRepository (который расширяется QuerydslJpaRepository)

Определения класса:

public class MyTypeRepositoryImpl
    extends QueryDslJpaRepository<MyType, Long>
    implements MyTypeRepository

@NoRepositoryBean
public interface MyTypeRepository
    extends JpaRepository<MyType, Long>,
    QueryDslPredicateExecutor<MyType> 

И это (из Spring Data)

public class QueryDslJpaRepository<T, ID extends Serializable> 
extends SimpleJpaRepository<T, ID> 
implements QueryDslPredicateExecutor<T>

РЕДАКТИРОВАТЬ 2:

Метод вызывает save (MyType entity) для каждого элемента, и этот метод содержит следующую логику:

сущность имеет поле, которое является уникальнымполучить значение этого поля и проверить, существует ли сущность с таким значениемесли да, используйте эту сущность (вызов entityManager.merge) -> не работает, возвращает MyType, а не Sесли нет создать новый -> здесь новый объект создается. Не работает с универсальным типом

Для 4. Я могу просто установить id = null и использовать переданный объект. Это не работает для 3.

Поэтому я очень озадачен, почему этот метод имеет эту подпись. Это делает его непригодным для меня, и я не понимаю, почему я бы сохранил подкласс T, используя Ts DAO. Методы сохранения являются единственными с. Все остальные просто используют T. Я мог бы просто привести к S, чтобы он компилировался, но это тоже выглядит ужасно ... так как любой другой тип, кроме T, приведет к исключению.

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

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