Hibernate (JPA) объект со статической коллекцией в качестве члена - PullRequest
3 голосов
/ 11 июня 2010

Возможно ли иметь статическую коллекцию в качестве члена спящего объекта?

Скажите, у меня есть объект Вопрос:

public class Question {
    private String category;

    ...
}

Можно ли заполнить статический набор , который представляет собой отдельный набор всех категорий в базе данных? Я знаю, что мог бы просто спросить об этом, но мне было интересно, было ли более элегантное решение, так как кажется, что другие люди могли с ним столкнуться.

Ответы [ 3 ]

3 голосов
/ 11 июня 2010

Насколько мне известно, JPA не может сохранять поля static или final. Спецификация не очень ясна по этому вопросу, но она имеет смысл IMO, так как я не вижу, что было бы в отношении OneToXXX (так как JPA должна его загружать). Возможно, вы захотите проверить следующую ветку на предмет некоторых отзывов (т.е. не окончательного ответа) от группы экспертов ejb3. Боюсь, вам придется как-то связать все свои Question со всеми Category.

Но, возможно, вы получите более "удовлетворительные" ответы. Посмотрим.

2 голосов
/ 11 июня 2010

Простое, но не идеальное решение - использование метода обратного вызова для сущности @PostLoad для Category или Question сущностей (или обоих):

@Entity
public class Question {
  public static Set<String> categories = new HashSet<String>();
  ...

  @PostLoad
  public void fillInCategories() {
    categories.add(category);
  }

}

categories загружается лениво - до всех вопросовзагруженные все категории не будут завершены.

0 голосов
/ 05 апреля 2015

Использовать доступ к собственности.

По умолчанию ObjectDB обращается к полям напрямую, но косвенный доступ к полям, поскольку свойства также используют методы get и set:

@Access(AccessType.PROPERTY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...