Quarkus: исключение IllegalStateException: невозможно создать дескриптор типа для компонента КЛАССА

#java #jpa #generics #quarkus

#java #jpa #общие #quarkus

Вопрос:

Я запускаю приложение quarkus, используя mvn compile quarkus:dev и получая ошибку ниже:

 Caused by: java.lang.IllegalStateException: Unable to construct the type handle for CLASS bean [types=[org.acme.dao.DaoManager<T extends org.acme.entities.IEntity, I extends java.io.Serializable>, java.lang.Object, org.acme.dao.IDao<T extends org.acme.entities.IEntity, I extends java.io.Serializable>], qualifiers=[@Default, @Any], target=org.acme.dao.DaoManager]: Unsupported bean type: UNRESOLVED_TYPE_VARIABLE, I
 

Я создал универсальный класс DAO, который реализует универсальный интерфейс IDAO, IDAO принимает только объект JPA, помеченный T extends IEntity
(примечание: I расширяет сериализуемость!)
Компонент помечен ApplicationScoped, потому что включает @Inject EntityManager
:

 import org.acme.entities.IEntity;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import java.io.Serializable;

@ApplicationScoped
public class DaoManager<T extends IEntity<I>, I extends Serializable> implements IDao<T,I> {

    @Inject
    private EntityManager entityManager;


    public <T> void save(T entity){
        entityManager.persist(entity);
    }
}

public interface IEntity<I extends Serializable> extends Serializable {
}

public interface IDao<T extends IEntity<I>, I extends Serializable> {

    <T> void save(T entity);

}
 

Пожалуйста, предложите.

Комментарии:

1. Я думаю, что здесь отсутствует производитель entity manager.

2. @GiorgioD. можете ли вы предложить мне пример?

3. Что-то вроде этого: public class EntityManagerProducer { @PersistenceContext private EntityManager em; @Produces @RequestScoped public EntityManager getEntityManager() { return em; } }

Ответ №1:

Ваш класс имеет несколько неизвестных типов для Quarkus, и в результате он не может создать из него объект.

Вы можете определить producer для DaoManagers с помощью заинтересованного объекта, тогда Quarkus сможет создавать объекты.

Комментарии:

1. можете ли вы предложить мне пример? Спасибо

2. вы имеете в виду, как javacodegeeks.com/2013/04 /… ?