构建 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();
.....
}
}