EJB :Использование EntityManager в методе PostConstruct

После создания bean-компонента я хочу получить данные из базы данных, используя EntityManager. В конструкторе это невозможно, потому что EntityManager внедряется после вызова конструктора. Поэтому я попытался сделать это в методе, аннотированном @PostConstruct. Согласно API, методы PostConstruct вызываются после выполнения всех инъекций. Выполнение запроса работает, но всегда возвращает пустой список. Если я использую тот же запрос в другом методе, он возвращает правильный результат. Кто-нибудь знает, почему это не работает в методе PostConstruct?

@Stateful(mappedName = "price")
@Singleton
@Startup
public class PriceManagementBean implements PriceManagement {

    @PersistenceContext
    private EntityManager em;

    private List<PriceStep> priceSteps =  Collections.synchronizedList(new ArrayList<PriceStep>());


    public PriceManagementBean(){


    }


    @PostConstruct
    public void init(){
        javax.persistence.Query query = em.createQuery("SELECT ps FROM PriceStep ps");
        List<PriceStep> res = query.getResultList();
           .....
       }
}
7
задан punkyduck 30 April 2012 в 14:18
поделиться