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