2012-02-15 44 views
0

在我的Bean我有以下代碼如下所示。從工廠獲取不同的對象

我想要什麼:每當我打電話給工廠時,我都想要一個新的隨機人員列表。

我得到了:我每次都得到同一個人名單。顯然的原因是,如果當前對象爲空,即僅在第一次工廠調用時,工廠方法纔會創建一個新對象。

我該如何改變代碼,我每次都得到一個新的對象?

謝謝!

@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

你可以使用的方法範圍:

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

技術上,方法的範圍是指供內部使用,雖然如此,如果每個HTTP請求一個新的列表是可以接受的,我會使用ScopeType.EVENT