gpt4 book ai didi

java - 数据模型的 CDI 生产者方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:14 24 4
gpt4 key购买 nike

我希望能够@Inject 一个支持 RichFaces 4 ExtendedDataTable 的数据模型,但它需要一个 EntityManager 来完成它的工作。 EntityManager 的查询需要知道类,当然,我宁愿不将其传递到方法调用中(在这种情况下,我的代码不调用这些方法);理想情况下,它将在构造函数中。

像这样:

public class DataModel<T> {
@Inject private EntityManager em;
private Class<T> entityClass;

public DataModel(Class<T> entityClass) {
this.entityClass = entityClass;
}

//Sample method - this class will handle much more complex queries
public T findEntity(String key) {
return em.find(entityClass, key);
}

是否可以创建一个 CDI @Producer 来将此 DataModel 注入(inject)我的支持 bean?我想过做一个限定符,这样你就可以做类似的事情

@Inject @JType(value = MyEntity.class) DataModel<MyEntity> dataModel;

但这看起来很笨拙,并且还需要我的@Producer 调用 new() - 我认为这不允许将 EntityManager 注入(inject)到 DataModel 中。此外,我不确定您将如何要求开发人员添加限定符。

或者也许有更好的方法来解决这个问题,而我遗漏了什么?

最佳答案

我使用 seam-persistence 执行此操作来自seam3的模块。 :

制作人:

public class EntityManagerProducer {

@Produces
@ExtensionManaged
@ConversationScoped
@PersistenceUnit(unitName = "yourUnitName")
private EntityManagerFactory emf;
}

然后您可以@Inject 实体管理器。

否则,有DeltaSpike看起来很有前途的项目(还没有用过)

关于java - 数据模型的 CDI 生产者方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6793756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com