Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用派生类';s场上的全部愤怒';s父项的初始化';s级_Java_Jpa_Jakarta Ee_Entitymanager - Fatal编程技术网

Java 使用派生类';s场上的全部愤怒';s父项的初始化';s级

Java 使用派生类';s场上的全部愤怒';s父项的初始化';s级,java,jpa,jakarta-ee,entitymanager,Java,Jpa,Jakarta Ee,Entitymanager,我们将JEE与CDI和EclipseLink一起使用。 我们有一个抽象类和一个子类来扩展它。 我希望在创建时使用JPA的实体名称启动entityName字段,但在对象创建的这一点上,Cat类中注入的entityManager仍然为空 我不想在AbstractClass的@PostConstruct方法中初始化entityName,因为这样初始值将是空字符串,如果子类希望使用entityName,正如您在下面看到的,它将得到初始空字符串值,而不是更新后的值。 有没有办法克服这个问题 publ

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

    ...
    }
公共抽象类AbstractClass{
受保护的最终字符串entityName=getEntityManager().getMetamodel().entity(entityClass.getName();
受保护的抽象EntityManager getEntityManager();
...
}
@适用范围
公共类Cat扩展了抽象类
{
私有最终字符串queryName=entityName+“.findBy”;
@持久上下文
私人实体管理者实体管理者;
@凌驾
公共实体管理器getEntityManager()
{
返回此.entityManager;
}
...
}