在父类的字段的初始化上使用派生类的EntityManger

时间:2019-12-09 02:58:22

标签: java jpa java-ee entitymanager

我们正在将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;
        }

    ...
    }

0 个答案:

没有答案