Можно, но вы должны называть это одной из общих коллекций - List
или Set
.
так:
private List matches = new Matches();
Почему? Потому что Hibernate создает прокси для ваших коллекций, чтобы включить отложенную загрузку, например. Таким образом, он создает PersistentList
, PersistentSet
и PersistentBag
, которые List
, но не Matches
. Итак, если вы хотите добавить дополнительные методы в эту коллекцию - ну, вы не можете.
Проверьте эту статью для получения более подробной информации.
Однако у вас есть решение. Не используйте наследование, используйте композицию. Например, вы можете добавить к вашей сущности метод с именем getMatchesCollection()
(в дополнение к традиционному геттеру), который выглядит следующим образом:
public Matches getMatchesCollection() {
return new Matches(matches);
}
И ваш Matches
класс будет выглядеть (используя google-collection 'ForwardingList
):
public class Matches extends ForwardingList {
private List<Match> matches;
public Matches(List<Match> matches) { this.matches = matches; }
public List<Match> delegate() { return matches; }
// define your additional methods
}
Если вы не можете использовать коллекции Google, просто определите ForwardingList
самостоятельно - он вызывает все методы базового List
Если вам не нужны какие-либо дополнительные методы для работы со структурой, не определяйте пользовательскую коллекцию.