我们正在将JEE与CDI和EclipseLink一起使用。 我们有一个抽象类和一个扩展它的子类。 我想在创建时使用JPA的实体名称来初始化 entityName 字段,但是在对象创建的这一点上,在 Cat 类中注入了 entityManager 仍然为空。
我不想在AbstractClass的@PostConstruct方法中初始化 entityName ,因为这样初始值将为空字符串,并且如果子类希望使用 entityName ,如下所示,它将获得初始的空字符串值,而不是更新的值。 有办法克服吗?
public abstract class AbstractClass<T, P> {
protected final String entityName = getEntityManager().getMetamodel().entity(entityClass).getName();
protected abstract EntityManager getEntityManager();
...
}
@ApplicationScoped
public class Cat extends AbstractClass<Cat,Integer>
{
private final String queryName= entityName + ".findBy";
@PersistenceContext
private EntityManager entityManager;
@Override
public EntityManager getEntityManager()
{
return this.entityManager;
}
...
}