Java: Wie kann diese generische Methode überschrieben werden?

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

Wenn ich folgende Methode verwende, um zu überschreiben

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

Ich erhalte folgenden Fehler:

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

Wie kann ich das lösen? Ich brauche keine generische Methode, und eigentlich sollte es auch nicht so sein. Was ich meine ist das

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

Funktioniert nicht, da die Methode ein neues Objekt von MyType erstellen kann, das nicht mit List "kompatibel" ist.

Wie kann ich das schaffen?

BEARBEITEN:

Zur Klarstellung. Ich versuche, die verschiedenen save () -Methoden von Spring-Daten zu überschreiben. SimpleJpaRepository (erweitert durch QuerydslJpaRepository)

Klassendefinitionen:

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

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

Und das (aus Frühlingsdaten)

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

EDIT 2:

Die Methode ruft save (MyType-Entität) für jedes Element auf und diese Methode enthält die folgende Logik:

Einheit hat ein Feld, das eindeutig istRufen Sie diesen Feldwert ab und prüfen Sie, ob eine Entität mit diesem Wert bereits vorhanden istwenn ja, benutze diese Entität (rufe entityManager.merge auf) -> funktioniert nicht gibt MyType nicht zurück Swenn nein erstelle ein neues -> hier wird ein neues Objekt angelegt. Funktioniert nicht mit generischem Typ

Zu 4. Ich kann einfach id = null setzen und das übergebene Objekt verwenden. Das funktioniert nicht für 3.

Ich bin sehr verwundert, warum diese Methode diese Signatur hat. Es macht es für mich unbrauchbar und ich verstehe nicht, warum ich eine Unterklasse von T mit Ts DAO speichern würde. Die Sicherungsmethoden sind die einzigen mit. Alle anderen benutzen einfach T. Ich könnte einfach nach S umwandeln, um es kompilieren zu lassen, aber das scheint auch hässlich zu sein ... da jeder andere Typ als T zu einer Ausnahme führen würde.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage