#java #jpa
#java #Список #jpa #общие
Вопрос:
Мне нужна помощь в следующем: у меня есть несколько вызовов метода, которые выглядят следующим образом:
private void saveA(myObjA myObj, List<A> myList) {
if (myList != null amp;amp; !myList.isEmpty()) {
myObj.saveAll(myList);
}
}
private void saveB(myObjB myObj, List<B> myList) {
if (myList != null amp;amp; !myList.isEmpty()) {
myObj.saveAll(myList);
}
}
...
Пример интерфейса:
public interface myObjA
extends JpaRepository<A, Long> {
}
public interface myObjB
extends JpaRepository<B, Long> {
}
...
Дело в том, что я создаю новый для всех других вызовов (myObjB, myListB, myObjC, myListC). myObj на самом деле является интерфейсом, а второй параметр всегда является списком некоторого объекта. Есть ли какой-либо способ преобразовать этот метод в один и указать тип объекта в вызове?
Ответ №1:
Это можно сделать с помощью универсального метода:
public <T, N> void save(JpaRepository<T, N> repo, List<T> list) {
if (null != list amp;amp; !list.isEmpty()) {
repo.saveAll(list);
}
}
// usage
@Autowired
private MyRepo repository; // MyRepo implements JpaRepository<MyObj, Long>
public void foo(List<MyObj> list) {
save(repository, list);
}