Метод по умолчанию, который вы определили, беспомощен, поскольку Spring будет реализовывать из коробки метод с таким же стиранием (см. CrudRepository.save()
).
Здесь вы не вызываете default
метод интерфейса:
JpaRepository.super.save(invoice);
вы вызываете абстрактный save()
метод CrudRepository
.
Но он не может скомпилироваться, поскольку abstract
.
Это могло бы работать как в цитируемом вопросе, если суперкласс JpaRepository
определил метод save()
по умолчанию, но это не так.
В таком случае, каков наилучший способ достижения этого?
Вы можете создать default
метод с отличным именем и из него вызвать save()
, который во время выполнения вызовет экземпляр InvoiceRepository
среды выполнения:
default Invoice saveInvoice(Invoice invoice) {
// I do sth here
...
return save(invoice);
}