У меня есть несколько функций ...Как объединить эти функции в общий
@Override
public List<ContentType> findAllContentTypes() {
return this.emf.createEntityManager()
.createNamedQuery("ContentType.findAll", ContentType.class)
.getResultList();
}
@Override
public List<Status> findAllStatus() {
return this.emf.createEntityManager()
.createNamedQuery("Status.findAll", Status.class)
.getResultList();
}
На самом деле у меня есть около 12 из них, которые получают все виды различных вещей. Я хотел бы взять эти функции и сделать одну общую функцию, чтобы заменить все эти.
Лучший способ, я могу думать, чтобы сделать это было бы сделать что-то вроде findAll("Language")
. Я начал делать ...
public List<T> findAll(String objectName) {
return this.emf.createEntityManager()
.createNamedQuery(objectName+".findAll", objectName)
.getResultList();
}
Проблемы (кроме моего IDE бросающего прилегания, не зная, что делать с T
) является то, что я не знаю, как взять эту строку и передать его на месте ContentType.class
.
Что мне не хватает, что препятствует признанию Netbeans T
?
Будет ли objectName
работать так, как я передаю его в качестве второго параметра в createNamedQuery()
?
Можете ли вы объяснить, почему мне нужно иметь 'общественный Список ' а не просто 'public List '? –
Webnet
Поскольку вам нужно указать, какой тип '', вы можете заставить T расширять другой класс следующим образом: ''. Объявив '', вы указываете, что он может быть любого типа, который расширяет объект (т. Е. Все типы) –
Gotcha! Кроме того, 'contentDao.findAll (« Пользователь »)' или 'contentDao.findAll (new User())' похоже, не является тем, что ищет эта функция ... – Webnet