Получение разных предметов с завода - PullRequest
0 голосов
/ 15 февраля 2012

в моем Бине у меня есть следующий код, показанный ниже.

Что я хочу: я хотел бы получать каждый раз, когда я называю фабрику новым случайным списком людей.

Что я получаю: я получаю каждый раз один и тот же список людей.Очевидная причина в том, что метод фабрики создает новый объект только в том случае, если текущий объект равен нулю, то есть только при первом вызове фабрики.

Как мне изменить код, чтобы получить новый объекткаждый раз?

Спасибо!

@Logger                  private Log log;
@In                      private EntityManager entityManager;
@In                      private LocaleSelector localeSelector;

@Factory("personList")
public List<Person> createPersonList() {
    log.info("Creating Person List.");

    return entityManager.createQuery(
    "SELECT p FROM Person p ORDER by random()")
    .setMaxResults(3)
    .getResultList();
}

1 Ответ

1 голос
/ 15 февраля 2012

Вы можете использовать область МЕТОДА:

@Factory(value="personList", scope=ScopeType.METHOD)
public List<Person> createPersonList() {

Технически область МЕТОДА предназначена для внутреннего использования, поэтому, если новый список для каждого HTTP-запроса приемлем, я бы использовал ScopeType.EVENT.

...